thể trùng lặp:
What does ||= (or equals) mean in Ruby?Toán tử || = đứng trong Ruby là gì?
Thật khó để tìm kiếm này trong Google bởi vì nó là một biểu tượng, không phải văn bản.
||=
có nghĩa là gì?
Và cách hoạt động?
thể trùng lặp:
What does ||= (or equals) mean in Ruby?Toán tử || = đứng trong Ruby là gì?
Thật khó để tìm kiếm này trong Google bởi vì nó là một biểu tượng, không phải văn bản.
||=
có nghĩa là gì?
Và cách hoạt động?
Nó gán một giá trị nếu chưa được gán. Như thế này:
a = nil
a ||= 1
a = 1
a ||= 2
Trong ví dụ đầu tiên, một sẽ được thiết lập để 1. Trong một giây, một vẫn sẽ là 1.
tôi chỉ có thể đoán, nhưng tôi cho rằng đó là viết tắt của một toán tử logic kết hợp với thiết lập một biến (như^=, + =, * = bằng các ngôn ngữ khác)
nên x ||= y
cũng giống như x = x || y
chỉnh sửa: tôi đoán đúng, xem http://phrogz.net/ProgrammingRuby/language.html#table_18.4
x = x || y
có nghĩa là: sử dụng x nếu được đặt, nếu không thì chỉ định y. nó có thể được sử dụng để đảm bảo các biến được ít nhất khởi tạo (đến 0, thành một mảng trống, v.v.)
Nếu b là con số không, gán cho nó.
a = :foo
b ||= a
# b == :foo
Nếu b không phải là không, đừng thay đổi.
a = :foo
b = :bar
b ||= a
# b == :bar
Đây là một 'nhiệm vụ viết tắt' (xem Ruby Pocket Reference, trang 10)
a = một || b
(có nghĩa là được gán giá trị hình thành bởi logic hoặc a, b
trở thành
một || = b
Hầu như tất cả các nhà khai thác có một phiên bản rút gọn (+ = * = & & = etc)
Trông giống như toán tử 'coalesce' của SQL –
Cảm ơn ... Chỉ đảm bảo rằng giá trị hiện tại của biến không bị ghi đè. –
This i s đẹp. Một cái gì đó C# có thể truyền cảm hứng từ. :-) –