2014-04-14 14 views
8

falsenil đánh giá false trong Ruby. Còn gì nữa không? Vui lòng cung cấp liên kết đến tài liệu tham khảo chính thức/có thẩm quyền.Điều gì đánh giá sai trong Ruby?

2.0.0p247 :001 > if true ; puts 'TRUE' ; else puts 'FALSE' ; end 
TRUE 

2.0.0p247 :002 > if false ; puts 'TRUE' ; else puts 'FALSE' ; end 
FALSE 

2.0.0p247 :003 > if nil ; puts 'TRUE' ; else puts 'FALSE' ; end 
FALSE 

2.0.0p247 :004 > if 0 ; puts 'TRUE' ; else puts 'FALSE' ; end 
TRUE 

2.0.0p247 :005 > if [] ; puts 'TRUE' ; else puts 'FALSE' ; end 
TRUE 

2.0.0p247 :006 > if {} ; puts 'TRUE' ; else puts 'FALSE' ; end 
TRUE 

2.0.0p247 :007 > if '' ; puts 'TRUE' ; else puts 'FALSE' ; end 
(irb):616: warning: string literal in condition 
TRUE 
+4

Bằng cách này: bạn đang mã ví dụ có thể được thể hiện ngắn hơn nhiều '[đúng, sai, nil, 0, [], {}, ' '] .map {| o | !! o} ' ' # => [đúng, sai, sai, đúng, đúng, đúng, đúng] ' – tessi

Trả lời

6

Bạn chỉ tìm thấy tất cả chúng

Trong Ruby, sai và nil là “falsy”, trong khi tất cả các giá trị khác là “truthy”

như Yehuda Katz đề cập trong mình blog post in 2009

2

Các chỉ false giá trị -y trong Ruby là falsenil, như xác nhận của cuốn sách "The Ruby Programming Language", David Flanagan và Yukihiro Matsumoto (các Matz):

vị từ thường trở lại một trong những giá trị Boolean true hoặc false, nhưng điều này không bắt buộc, vì bất kỳ giá trị nào khác ngoài false hoặc nil hoạt động như true khi giá trị Boolean là bắt buộc. (Phương pháp Numericnonzero?, ví dụ, trả nil nếu số đó được gọi vào là zero, và chỉ cần trả về số khác.)

(tôi nhấn mạnh)

quote này có thể được tìm thấy trên page 180 của cuốn sách.

Các vấn đề liên quan