在下面的代码中有一个执行路径在测试之前没有设置“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/