我们知道您可以使用
在Ruby中定义变量x || = 1 # 1
x || = 2 # still 1
这也有效
a = 1 unless defined? b
# a is 1 now
但这不是
a = 1 unless defined? a
# a is nil here
任何人都能明白为什么这有意义吗?我认为a = 1 unless defined? a
听起来比a ||= 1
好,但它不起作用。
答案 0 :(得分:1)
您不需要(或想要)defined?
。
a = 1 unless a
在Ruby 2.2中对我有用,没有用其他版本测试它,但我希望它也适用于它们。
答案 1 :(得分:0)
正如@pjs建议的那样,
a = 1 unless a
似乎运作良好(只要有问题的变量不应该是布尔值 - 或者是nil--)。老实说,我明白a ||= 1
是一种典型的,但听起来很奇怪。
另外,我发现了
A = 1 unless defined? A
也有效。也许常量在编译/解释过程中有不同的行为。