Поиск…


замечания

Как правило, избегайте использования двойного отрицания в коде. 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