Недавно я потратил час, пытаясь объяснить кому-то, как работают два вложенных предложения «если», расшифровать их было сложно без необходимости инвертировать их в операторы if с логической логикой.
Если вы попытаетесь преобразовать его в английский, это поможет вам.
Простой, если не работает нормально. Например.
«Если вы не молчите, я вас проигнорирую».
unless ($quiet) {
ignore();
}
Хотя я думаю, что это работает одинаково хорошо
«Если вы не молчите, я вас проигнорирую»
if (not $quiet) {
ignore();
}
когда все становится сложным, это когда у вас отрицание.
«Если вы не шумите, я буду игнорировать вас»
unless ( ! $noisy) {
ignore();
}
Гораздо лучше записано как
«Если вы шумите, я вас проигнорирую»
if ($noisy) {
ignore();
}
Итак, не используйте «если», если у вас также есть отрицание.
Также не используйте «если нет»
unless ($quiet) {
ignore();
}
else {
give_a_sweet();
}
«Если вы не молчите, я буду игнорировать вас, иначе я дам вам сладкое»
Измените его, изменив условие.
if ($quiet) {
give_a_sweet();
}
else {
ignore();
}
«Если вы молчите, я дам вам сладкое, иначе я вас проигнорирую».
с более чем одним состоянием, это становится грязным.
unless ($quiet and not $fidgit) {
punish();
}
«Если ты не будешь молчать и не будешь волноваться, я тебя накажу».
(извините, мое понимание здесь не так!)
Опять отрицай.
if (not $quiet or $fidgit) {
punish();
}
«Если ты не будешь спокоен, или ты урод, я тебя накажу».
проблема с использованием «если» даже для простейших случаев, они часто (самостоятельно или вне его
Надеюсь, это прояснит, когда вы должны или не должны использовать разве что?
(разве у вас нет другого мнения?)