Запоминание синтаксиса троичного оператора

StackOverflow https://stackoverflow.com/questions/1428708

  •  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'

Если ваши юнит-тесты все еще проходят, когда вы ошибаетесь, то либо это не имеет значения, либо ваши тесты не покрывают достаточно путей в коде. Если между вводом текста и получением положительного / отрицательного результата в тестах слишком большой промежуток, это еще одна проблема. Очень мало небольших синтаксических нитов имеют значение при наличии хороших, быстрых тестов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top