我对以下行为感到有点困惑
if true
foo = "true"
end
if false
bar = "false"
end
foo # => "true"
bar # => nil
buzz # =>
# ~> -:11:in `<main>': undefined local variable or method `buzz' for main:Object (NameError)
我希望bar会抛出一个NameError,但事实并非如此,当我和一些朋友玩游戏时我真的碰到了这个,但是没有人可以对这种行为做出明确的解释,这要归功于预期的明确答案
答案 0 :(得分:1)
在ruby中,在if
块内声明的变量与在方法内的顶层声明的变量具有完全相同的范围。由于翻译已经通过bar
所见的行,因此很好。