In the following code there is an execution path where "bar" is not set before it is tested, is doing this safe in Ruby? will "bar" have a default initialisation?
if foo
bar = true
end
if bar
puts "true"
end
Yes, it is safe, in the sense that the worst that can happen when an uninitialized local is referenced is that a NameError exception will be raised.
Yours is a bit of a special-case, actually. Since the parser will have seen bar before it is referenced, then the method will not raise NameError, even if foo is false, but rather the value of bar will be nil.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With