I want to be able to traverse a tree and for each node perform some
random code...sounds like an ideal situation for blocks, right?
My problem is that I'm not sure how to keep passing the code block in
the recursive call. This is my best attempt so far... i'm not very
strong in this area so any advice would be welcome!
聽聽def self.depthFirstTraversal(parent , &block)
聽聽聽聽children = parent.children
聽聽聽聽children.each do |child|
聽聽聽聽聽聽block.call(child)
聽聽聽聽聽聽self.depthFirstTraversal(child) do |node|
聽聽聽聽聽聽聽聽block.call(node)
聽聽聽聽聽聽end
聽聽聽聽end
聽聽end
I want to be able to traverse a tree and for each node perform some
random code...sounds like an ideal situation for blocks, right?
My problem is that I'm not sure how to keep passing the code block in
the recursive call. This is my best attempt so far... i'm not very
strong in this area so any advice would be welcome!
def self.depthFirstTraversal(parent , &block)
children = parent.children
children.each do |child|
block.call(child)
Instead of...
self.depthFirstTraversal(child) do |node|
block.call(node)
end
try this...
depthFirstTraversal(child, &block)
路路路
end
end
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407
I want to be able to traverse a tree and for each node perform some
random code...sounds like an ideal situation for blocks, right?
My problem is that I'm not sure how to keep passing the code block in
the recursive call. This is my best attempt so far... i'm not very
strong in this area so any advice would be welcome!
def self.depthFirstTraversal(parent , &block)
children = parent.children
children.each do |child|
block.call(child)
self.depthFirstTraversal(child) do |node|
depthFirstTraversal(child, &block)
block.call(node)
end
Lose these two lines.
end
end
Just FYI, Ruby naming conventions are to use methods_like_this, notLikeThisJavaStyle.
On 5/1/06, Andrew Gibson <gibson_andrew@yahoo.com> wrote:
Ahhh..found my solution:
def self.depthFirstTraversal(parent , &block)
children = parent.children
children.each do |child|
block[child]
self.depthFirstTraversal(child, &block)
end
end
I'm not familiar with the for passing the argument to the proc(?) ...
anyone have any comments?