如果未定义,则在Ruby中定义变量(不是|| =)

时间:2015-05-01 15:14:22

标签: ruby

我们知道您可以使用

在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好,但它不起作用。

2 个答案:

答案 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

也有效。也许常量在编译/解释过程中有不同的行为。