我一直在玩 Codecademy Ruby 课程,并且有一个关于 lambdas 和 Procs 的练习。我确实理解其中的区别,但我不太明白为什么这里列出的第一个代码有效,而第二个无效。
为什么会这样:
def batman_ironman_proc
p = Proc.new { return "Batman will win!" }
p.call
"Iron Man will win!"
end
puts batman_ironman_proc # prints "Batman will win!"
但不是这个:
def batman_ironman_proc(p)
p.call
"Iron Man will win!"
end
p = Proc.new { return "Batman will win!" }
puts batman_ironman_proc(p) # unexpected return