ruby“或等于”赋值运算符:||=

作用:如果想为一个变量赋值,当且仅当它是空值nil的时候(如果不是nil,则不改变它原来的数值)


例:

# 当a变量不是空值的时候
a = 3     => 3
a ||= 5   => 3
a         => 3


# 当a 是空值的时候
a = nil   => nil
a ||= 5   => 5
a         => 5


再例如

a = false     => false
a ||= true    => true
a             => true

这个时候a是false不是nil空值啊,但是为什么 ||= 运算符会把这个true值赋给a呢?
因为 ||= 仅仅是一种“或操作并且赋值”的简写:

x = x || y

# 等价于

x ||= y




转载自:http://chinacheng.iteye.com/blog/1915407