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

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

Ответ 1

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

unless foo?
    # blabla
end

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

if !foo?
    # blabla
end

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

См. также: Если, The Abused Ruby Conditional

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

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