在下面的代码中有一个执行路径,其中在测试之前没有设置“bar”,在 Ruby 中这样做是否安全? “bar”会有默认的初始化吗?
if foo
bar = true
end
if bar
puts "true"
end
最佳答案
是的
是的 ,它是安全的,因为引用未初始化的本地时可能发生的最坏情况是将引发 NameError 异常。
实际上,您的情况有点特殊。由于解析器在被引用之前会看到 bar
,因此该方法不会引发 NameError
,即使 foo
为 false ,而是 bar
的值将是 nil
。
关于Ruby 变量初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5111741/