Ruby Language
Truthiness
Поиск…
замечания
Как правило, избегайте использования двойного отрицания в коде. Rubocop говорит, что двойные отрицания излишне сложны и часто могут быть заменены чем-то более читаемым.
Вместо написания
def user_exists?
!!user
end
использование
def user_exists?
!user.nil?
end
Все объекты могут быть преобразованы в булевы в Ruby
Используйте синтаксис двойного отрицания для проверки правдоподобия значений. Все значения соответствуют булевым, независимо от их типа.
irb(main):001:0> !!1234
=> true
irb(main):002:0> !!"Hello, world!"
(irb):2: warning: string literal in condition
=> true
irb(main):003:0> !!true
=> true
irb(main):005:0> !!{a:'b'}
=> true
Все значения, кроме nil
и false
являются правдивыми.
irb(main):006:0> !!nil
=> false
irb(main):007:0> !!false
=> false
Истинуемость значения можно использовать в конструкциях if-else
Вам не нужно использовать двойное отрицание в операторах if-else.
if 'hello'
puts 'hey!'
else
puts 'bye!'
end
Вышеприведенный код печатает «эй!» на экране.
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow