Что оценивает false в Ruby?
false
и nil
оцените false в 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
Ответы
Ответ 1
false
и nil
являются единственными:
http://www.ruby-doc.org/core-2.1.1/FalseClass.html
Rails предоставляет present?
, который также включает пустые строки и пустые массивы: http://api.rubyonrails.org/classes/Object.html#method-i-present-3F
Ответ 2
Вы только что нашли их все
В Ruby false и nil являются "ложными", а все остальные значения "правдивы"
как сказал Иегуда Кац в своем блоге в 2009 году
Ответ 3
Единственными значениями false
-y в Ruby являются false
и nil
, о чем свидетельствует книга "Язык программирования Ruby" Дэвида Фланагана и Юкихиро Мацумото (Matz):
Предикаты обычно возвращают одно из булевых значений true
или false
, но это не требуется, поскольку любое значение, отличное от false
или nil
, работает как true
, когда булевское значение равно требуется. (Метод Numeric
nonzero?
, например, возвращает nil
, если номер, на который он вызывается, равен нулю, и просто возвращает число в противном случае.)
(акцент мой)
Эта цитата приведена в странице 180 этой книги.
Ответ 4
Я могу только согласиться, что nil
и false
действительно являются единственными двумя значениями, которые оцениваются в false в Ruby. Я просто хотел указать на другой полезный ресурс:
True и False против "Truthy" и "Falsey" (или "Falsy" ) в Ruby, Python и JavaScript