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

10-12 07:33
查看更多