M
matt
Is there any reason that break acts differently in a block passed to a
method depending on whether yield is used?
[run]
bash-2.05$ ruby test.rb
in meow true
in proc
in meow false
in proc
leaving meow
bash-2.05$ ruby --version
ruby 1.6.7 (2002-03-01) [sparc-solaris2.7]
[/run]
[run]
[matt@linux1 matt]$ ruby test.rb
in meow true
in proc
in meow false
in proc
leaving meow
[matt@linux1 matt]$ ruby --version
ruby 1.8.0 (2003-08-04) [i586-linux]
[/run]
method depending on whether yield is used?
Code:
def meow(doyield, &block)
puts "in meow #{doyield}"
if doyield then yield else block[] end
puts "leaving meow"
end
b = proc {
puts "in proc"
break
puts "leaving proc"
}
meow(true, &b)
puts
meow(false, &b)
[run]
bash-2.05$ ruby test.rb
in meow true
in proc
in meow false
in proc
leaving meow
bash-2.05$ ruby --version
ruby 1.6.7 (2002-03-01) [sparc-solaris2.7]
[/run]
[run]
[matt@linux1 matt]$ ruby test.rb
in meow true
in proc
in meow false
in proc
leaving meow
[matt@linux1 matt]$ ruby --version
ruby 1.8.0 (2003-08-04) [i586-linux]
[/run]