Запоминание синтаксиса троичного оператора
-
07-07-2019 - |
Вопрос
У кого-нибудь есть хороший трюк, чтобы запомнить стандартный троичный синтаксис?
В частности, стоит ли на первом месте '?' или ':'.На протяжении многих лет я постоянно возвращался к этому вопросу.
Решение
Условие, которое вы проверяете, похоже на вопрос, поэтому вопросительный знак стоит первым.
x > 0 ? 1 : 0
Думайте об этом утверждении как о трех предложениях на английском языке: " x больше 0? Тогда 1. Остальное, 0. " У вас есть одно предложение для каждого предложения в утверждении.
Предикат:
x > 0 ? /* Is x greater than 0? */
" правда " Отрасль:
1 /* Then 1. */
" ложь " Отрасль:
: 0 /* Else, 0. */
Другие советы
Что касается запоминания того, какой символ стоит первым, я просто вспоминаю тот факт, что первая часть представляет собой вопрос "Правда это или нет?", поэтому знак вопроса идет первым.
Я думаю о синтаксисе таким образом
Question ? Yes : No
в питоне я читаю это как обычное английское предложение:
a equals b if condition is true else c
Думайте об этом так: троичное выражение состоит из трех частей: вопрос, код, который нужно выполнить, если ответом на вопрос является «да» и код, если ответ «нет». & Quot;? & Quot; приходит после вопроса, как в английских предложениях.
"?" - это вопросительный знак, поэтому он означает "если".
Двоеточие означает: "сейчас это произойдет", "тогда делай".
Чем хорош троичный оператор, так это тем, что вас не заставляют его использовать, особенно если у вас возникли проблемы с запоминанием синтаксиса.Просто используйте if-оператор, который в большинстве случаев более удобочитаем.
И нет - троичный код обладает не лучшей производительностью, чем if-оператор.
Это выглядит так:
myVariable = this.testMethod() ? 'value for true case' : 'value for false case'
Если ваши юнит-тесты все еще проходят, когда вы ошибаетесь, то либо это не имеет значения, либо ваши тесты не покрывают достаточно путей в коде. Если между вводом текста и получением положительного / отрицательного результата в тестах слишком большой промежуток, это еще одна проблема. Очень мало небольших синтаксических нитов имеют значение при наличии хороших, быстрых тестов.