Разница - если / если - PullRequest
       1

Разница - если / если

37 голосов
/ 26 января 2011

Может кто-нибудь объяснить мне разницу между if и unless и когда его использовать?

Ответы [ 5 ]

63 голосов
/ 26 января 2011

unless это просто отрицание if. То есть он выполняет все, что содержит, если условие не true.

unless foo?
    # blabla
end

Просто означает

if !foo?
    # blabla
end

Все дело в том, что вам легче читать, на самом деле.

См. Также: Если не указано условие злоупотребления рубином

9 голосов
/ 10 марта 2012

Использование «если» не является простым для меня, когда есть один аргумент, но я нахожу его запутанным, когда их несколько.А при использовании || вместо &&.

«Если не то или другое» просто тяжелее для моего мозга. «если не это и не так», то проще.

В будущем будет сложнее поддерживать этот код, если я его использую.Так что я не знаю.

7 голосов
/ 26 января 2011

unless просто эквивалентно if not.Когда вы используете, который является личным предпочтением.

2 голосов
/ 26 января 2011

Разница между if и unless заключается в том, что они являются точными противоположностями друг другу:

  • if принимает условие, блок then и необязательный блок else и оценивает блок then, если условие истинно, в противном случае он оценивает блок else
  • unless принимает условие, блок then и необязательный блок else, и он оценивает блок then, если условие ложно, в противном случае он оценивает блок else

Или, другими словами: в Ruby они означают почти то же самое, что и в английском.

0 голосов
/ 09 мая 2019

Как разработчик ruby ​​on rails, лучше всего следовать рекомендациям по поддержанию читабельности кода. Мой ответ не имеет прямого отношения к этому вопросу, но может кому-то помочь. Попробуйте использовать if как можно больше вместо unless Например, вместо unless comments.empty? лучше использовать if comments.present? вместо unless comments.present? попробуйте использовать if comments.blank?, blank? проверки для empty и nil.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...