在下面的代码中有一个执行路径,在测试之前没有设置“bar”,在Ruby中这样做是否安全? “bar”会默认初始化吗?
if foo
bar = true
end
if bar
puts "true"
end
答案 0 :(得分:7)
是,这是安全的,因为在引用未初始化的本地时可能发生的最坏情况是将引发 NameError 异常。
实际上,你的实际情况有点特殊。由于解析器在引用之前会看到bar
,因此即使NameError
为false,该方法也不引发foo
,而是bar
将为nil
。