các ||=
toán tử đầu tiên kiểm tra, nếu giá trị của bạn car
đã được đặt. Nếu car
trả lại không, giá trị đầu tiên sẽ được gán ở bên phải không trả về nil
hoặc false
.
Vì vậy, được đưa ra ví dụ của bạn từ trên cao, nếu bạn gán giá trị cho chiếc xe như
car = "BMW"
và bạn thực hiện bạn mã đoạn, giá trị của chiếc xe sẽ vẫn là "BMW";
Nếu lợi nhuận method_1 (ví dụ) String "Value from Method 1"
và xe là nil
hoặc false
, sau đó xe Chuỗi này sẽ được giao cho xe
car = nil
car ||= (method_1 || method_2)
car # => "Value from Method 1"
Nếu method_1 cũng trả nil
/false
, nó sẽ kiểm tra sự giá trị trong phương thức_2, v.v., cho đến khi nó nhận được một số loại giá trị thực
Sự khác biệt với đoạn mã thứ hai của bạn là, trong trường hợp ||=
biến car
sẽ được đánh giá đầu tiên và đặt lại biến thành không hoặc sai.
Nếu bạn chỉ sử dụng =
, không có đánh giá nào sẽ xảy ra và ô tô sẽ được đặt thành giá trị đầu tiên ở bên phải không trả về 0 hoặc không đúng.
- CẬP NHẬT -
Để trả lời câu hỏi cập nhật của bạn, giá trị ở bên phải sẽ được đánh giá từ trái sang phải, vì vậy một trong những đầu tiên mà không trả lại nil
hoặc false
sẽ được chỉ định.
car = nil
# method_1 => "nil"
# method_2 => "false"
# method_3 => "value method 3"
# method_4 => "I won't be called"
car ||= (method_1 || method_2 || method_3 || method_4)
# => "value method 3"
http://stackoverflow.com/questions/995593/what-does-mean-in-ruby –
Trùng lặp: ['|| =' có nghĩa là gì trong Ruby?] (Http://StackOverflow.Com/q/995593 /), [có nghĩa là gì? || = 'có nghĩa là trong Ruby?] (Http://StackOverflow.Com/q/3800957/), [là gì | || =' trong ruby?] (Http: // StackOverflow.Com/q/3945711/), [Ký hiệu ống đôi trong phép gán biến đổi của Ruby?] (Http://StackOverflow.Com/q/4500375/), [Toán hạng '' || = '” là gì? ruby] (http://StackOverflow.Com/q/5124930/), [có nghĩa là gì? || = 'có nghĩa là trong ngôn ngữ Ruby?] (http://StackOverflow.Com/q/5230162/), [Là toán tử ruby '|| =' thông minh?] (http://StackOverflow.Com/q/2989862/),… –
… ['|| =' có nghĩa là gì?] (http://StackOverflow.Com/q/ 7556902 /), ["| | = =" làm gì trong Ruby 1.9.2?] (Http://StackOverflow.Com/q/7714803/), và có lẽ nhiều người khác nữa. Xem thêm [Danh sách cuối cùng của các chuỗi và trang '|| =' (HOẶC Bình đẳng)] (http://Ruby-Forum.Com/topic/151660/). –