我以为:
do_something if condition
相当于
if condition
do_something
end
我发现了一个不遵守此规则的代码。
if !(defined? foo)
foo = default_value
end
在这里,foo需要default_value.
foo = default_value if !(defined? foo)
在这里,foo需要nil. 在前面的代码中,我认为if是先执行的,应该相当于:
foo = (default_value if !(defined? foo))
default_value如果未定义变量,有什么方法可以设置?
一般回答:
一些评论想要使用运营商......如果是||=,这将不起作用:foonil
foo ||= default_value
将返回默认值,而foo定义。
我坚持使用“not defined?”,它不等于nil.