Leon's Blogging

Coding blogging for hackers.

Ruby - ||= (Or-equals) Mean?

| Comments

a ||= b 等於 a || a = b 但不等於 a = a || b,意思上不一樣,但出來的結果會是一樣的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 以下相等
a || a = b
a ? a : a = b

if a then a
else a = b
end

# 以下相等
a = a || b
a = a ? a : b
if a then a = a
else a = b
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
a, b = false, nil

a ||= b # => nil
a || a = b # => nil
a = a || b # => nil

a, b = nil, true

a ||= b # => true
a || a = b # => true
a = a || b # => true

a, b = 1, 2

a ||= b # => 1
a || a = b # => 1
a = a || b # => 1

參考文件

Comments