Может ли кто-нибудь объяснить мне разницу между 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
.