我以为:
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
如果未定义变量,有什么方法可以设置?
一般回答:
一些评论想要使用运营商......如果是||=
,这将不起作用:foo
nil
foo ||= default_value
将返回默认值,而foo
定义。
我坚持使用“not defined?
”,它不等于nil
.