Tôi vừa gặp một lỗi đáng lo ngại trong ứng dụng đường ray của mình và tôi phát hiện ra rằng vấn đề là 0! Tôi đã giả định điều đó, điều đó đúng.! 0 là sai trong đường ray. Tại sao?
Tôi đã có ấn tượng về điều đó! toán tử sẽ đảo ngược các bit trong một số nguyên vì vậy 0 sẽ trở thành tất cả 1 và do đó sẽ là đúng.
Đó không phải là trường hợp, tại sao?
Cũng lưu ý từ các đường ray console:
1.9.3p286 :002 > !0
=> false
1.9.3p286 :003 > 0
=> 0
1.9.3p286 :004 > !1
=> false
1.9.3p286 :005 > !!0
=> true
1.9.3p286 :006 > !0
=> false
1.9.3p286 :007 > !23
=> false
Từ wikipedia (http://en.wikipedia.org/wiki/Ruby_%28programming_language%29): "Đánh giá Boolean dữ liệu không phải là boolean là nghiêm ngặt: 0," "và [] là tất cả được đánh giá là đúng. " –
Từ các tài liệu chính thức: http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html#UF – Pigueiras
Thao tác bit không liên quan. – sawa