루비의 n- 트리에 대해 맵 함수를 작성하려면 어떻게해야합니까?루비 트리 클래스의 맵 함수
는class Tree
def children() return @children end
def label() return @label end
def initialize(label, children)
@label = label
@children = children
end
def map(&block)
# TODO
end
end
(공지 사항 children
는 임의의 목록 (반드시 길이 <의 = 2)입니다.)
내가 함수 작성하려면 : map(&block)
, 주어진 트리의 모든 하위 트리에 block
을 적용 (포함 나무 그 자체). 즉, block
은 Tree
을 받아 임의 유형의 객체 인 B
을 반환합니다. 지도의 결과는이고 레이블은 B
입니다.
불행히도, 이것은 효과가없는 것 같습니다. 지도의 결과는 나무가 아닙니다. 당신은 당신의 솔루션에 대해 더 명백하게 표현할 수 있습니까? – dsg
'each '를 구현하는 것은 클래스의 내부 구조에 달려 있습니다.샘플 코드에는 트리 작성 방법이나 기반으로하는 내용이 표시되어 있지 않습니다. 이 정보가 없으면 더 많은 정보를 제공 할 방법이 없습니다. –
예를 들어, float 트리를 구성 할 때 (각 레이블은 float이고 children은 그러한 트리의 배열입니다) 't'를 호출 할 수 있도록 'each'를 구현하고 싶습니다. .map {| x | -x.label}'은't '와 동일한 새로운 트리를 리턴하지만 각 레이블의 값은 무효화됩니다. 어떻게 '각자'가 그렇게 작동하도록 정의 할 수 있습니까? – dsg