目前,如果它不存在,我会收到undefined local variable or method
错误。
如何检查变量的值,并考虑它根本不存在。
我认为&&
是合约,但是:
if defined? aaa && aaa == '123' then puts aaa end
NameError: undefined local variable or method `aaa' for main:Object
答案 0 :(得分:6)
在这种情况下,您需要括号defined?(aaa)
,否则它会将整个表达式aaa && aaa == '123'
评估为defined?(aaa && aaa == '123')
。所以你的代码真的是这样做的:
if defined?(aaa && aaa == '123') # returns "expression" string, and thus true
puts aaa # the error comes from this part, since aaa is not defined.
end