3
A
답변
11
에 해시를 얻는 쉬운 방법 자동-생생하게 배열은과 같이, Hash::new
로 기본값 블록을 사용하는 것입니다
node_children = Hash.new { |_node_children, node_key| _node_children[node_key] = [] }
하지만 실제로는, 코드에 따라 달라집니다 당신은 당신의 배열로하고 싶다. 당신은 하나 이 해시 및 배열로 설정, 또는 어떤 클래스를 만들 수 있습니다
class Node
attr_accessor :value, :children
def initialize(value, children=[])
@value = value
@children = children
end
def to_s(indent=0)
value_s = @value.to_s
sub_indent = indent + value_s.length
value_s + @children.map { |child| " - " + child.to_s(sub_indent + 3) }.join("\n" + ' ' * sub_indent)
end
end
ROOT = Node.new('root', %w{ farleft left center right farright }.map { |str| Node.new(str) })
puts "Original Tree"
puts ROOT
puts
ROOT.children.each do |node|
node.children = %w{ one two three four }.map { |str| Node.new(node.value + ':' + str) }
end
puts "New Tree"
puts ROOT
puts
이 코드를, 예를 들어, 제공 :
Original Tree
root - farleft
- left
- center
- right
- farright
New Tree
root - farleft - farleft:one
- farleft:two
- farleft:three
- farleft:four
- left - left:one
- left:two
- left:three
- left:four
- center - center:one
- center:two
- center:three
- center:four
- right - right:one
- right:two
- right:three
- right:four
- farright - farright:one
- farright:two
- farright:three
- farright:four
5
속성이 모두 배열 인 해시가 있습니까? 오토의 대답에 확장하려면
2
RubyTree 보석 나를 위해 큰 일했습니다.
관련 문제
- 1. 여러 하위 트리를 수행하는 Gradle Zip 작업?
- 2. SQL 데이터베이스에 트리를 저장하는 방법
- 3. 이진 트리를 만드는 방법
- 4. 스패닝 트리를 만드는 방법
- 5. wijmo 트리를 가로 지르는 방법
- 6. JTree에 개체 트리를 표시하는 방법?
- 7. GeckoFX에서 Dom 트리를 얻는 방법
- 8. 추상 구문 트리를 구성하는 방법
- 9. NotStartsWith 표현식 트리를 만드는 방법
- 10. 기능적으로 폭 우선 트리를 생성하는 방법. (하스켈로)
- 11. Grails에서 트랜잭션을 수행하는 방법
- 12. xml에서 enum을 수행하는 방법
- 13. 휘트니스 기능을 수행하는 방법
- 14. OpenID로 OAuth2를 수행하는 방법
- 15. Grails에서 멋지게 수행하는 방법
- 16. Django 쿼리를 수행하는 방법
- 17. Zend_Db_Table_Abstract - SUM을 수행하는 방법?
- 18. NHibernate에서 NotEqual을 수행하는 방법
- 19. NHibernate에서이 프로젝션을 수행하는 방법?
- 20. Prolog에서 이것을 수행하는 방법?
- 21. android에서이 레이아웃을 수행하는 방법
- 22. iPhone에서 SFTP를 수행하는 방법?
- 23. 레이크 작업을 수행하는 방법
- 24. onListItemClick을 수행하는 방법?
- 25. 뉴스 바를 수행하는 방법
- 26. 루비에서 다음을 수행하는 방법?
- 27. LINQ에서이 작업을 수행하는 방법?
- 28. MVC에서 캐싱을 수행하는 방법
- 29. 순차 처리를 수행하는 방법
- 30. SiteCore의 직렬화 트리를 TFS로 확인하는 방법