Trong Ruby, tại sao các dòng sau lại đúng?Tại sao 0 && 1 là 1 trong khi 1 && 0 bằng 0 trong ruby?
0 && 1 == 1
1 && 0 == 0
Tại sao chúng khác nhau và không phải là 0?
Trong Ruby, tại sao các dòng sau lại đúng?Tại sao 0 && 1 là 1 trong khi 1 && 0 bằng 0 trong ruby?
0 && 1 == 1
1 && 0 == 0
Tại sao chúng khác nhau và không phải là 0?
Boolean VÀ toán tử &&
trả về toán hạng thứ hai nếu trước tiên không sai. 0
và 1
là true
trong các biểu thức boolean trong Ruby. Chỉ nil
và false
là sai trong biểu thức boolean.
nil && 15 # => nil
15 && 17 # => 17
15 && nil # => nil
0
và 1
không thể hiện giá trị chân lý trong Ruby. Trong bất kỳ thứ gì ruby không phải là nil
hoặc false
đều đúng. Nếu bạn thêm vào điều này:
Các toán tử và và & đánh giá toán hạng đầu tiên của chúng. Nếu sai, biểu thức trả về false; nếu không, biểu thức trả về giá trị của toán hạng thứ hai.
Bạn nhận được rằng bạn đánh giá true && true
và sau đó kết quả của toán hạng thứ hai được trả về. Nếu bạn đã viết 3 && 4
, bạn sẽ nhận được 4
!
Ngoài câu trả lời tuyệt vời ở đây:
Bạn có thể nhầm lẫn logic và Bitwise AND.
$ irb
1.9.3-p125 :001 > 1 & 0
=> 0
1.9.3-p125 :002 > 0 & 1
=> 0