2009-09-15 4 views
6

У кого-нибудь есть хороший трюк, чтобы вспомнить стандартный тройной синтаксис?Вспоминая синтаксис тройного оператора

В частности, следует ли указывать '?' или ':' на первом месте. На протяжении многих лет я постоянно возвращался назад.

+5

никогда не думал, что это возможно получить назад ... –

+2

operatorName = isPedantic()? «условный»: «тройной»; –

+5

Почему ненависть по этому вопросу? Это немного светло, но я имею в виду, что это не похоже на «Факты о шанке Джона» или что-то в этом роде. – Chuck

ответ

21

Состояние, которое вы проверяете, похоже на вопрос, поэтому знак вопроса на первом месте.

x > 0 ? 1 : 0 

Подумайте об этом утверждении как о трех английских предложениях: «Является ли x большим, чем 0? Тогда 1. Else, 0." У вас есть одно предложение для каждого предложения в заявлении.

Предикат:

x > 0 ? /* Is x greater than 0? */ 

"Истинный" филиал:

1 /* Then 1. */ 

"ложном" филиал:

: 0 /* Else, 0. */ 
+1

Существует специальный случай ответа 42, который возникает перед вопросом. –

+0

спасибо, трюк «вопрос» должен отлично работать для меня –

0

Это выглядит следующим образом:

myVariable = this.testMethod() ? 'value for true case' : 'value for false case' 
0

в питоне я прочитал его как обычный английское предложение:

a equals b if condition is true else c 
+3

Я правильно понял, что избиратели просто ревнуют, потому что их язык выбора настолько отсталый? – SilentGhost

+0

Возможно, они (кстати, я их не один), но ваш ответ также не особенно полезен для этого вопроса. Никто не помнит порядок ключевых слов в эквиваленте Python. Это одна из замечательных особенностей Python. BDFL и сообщество прилагают все усилия, чтобы сделать язык приятным, понятным и последовательным, насколько это возможно. Но знание этого не обязательно поможет вам с C-подобными языками. –

+0

@A. Леви: с точно такой же прямой личностью я мог утверждать, что никто не может вспомнить синтаксис C-стиля, потому что более естественно создавать «вопрос/да/нет», а не «вопрос/нет/да». – SilentGhost

9

Насколько запоминании, какой символ приходит первый, я просто думаю о том, что первая часть является вопрос, «Является ли это правда или нет? », поэтому знак вопроса идет первым.

Я думаю, что синтаксис таким образом

Question ? Yes : No 
0

думать об этом так: тройном заявлении состоит из трех частей: вопрос, код для выполнения, если ответ на этот вопрос «да» и код, если ответ «нет». «?» приходит после вопроса, как в английских предложениях.

0

"?" это знак вопроса, поэтому он означает «если».

Двоеточие означает «теперь оно приходит», «тогда делайте».

Хорошая вещь о тройном операторе заключается в том, что вы не вынуждены его использовать, особенно если у вас возникли проблемы с запоминанием синтаксиса. Просто используйте инструкцию if, которая более читаема в большинстве случаев.

И нет - тройник не имеет лучшего исполнения, чем if-statement.

+0

Почему -1? ОП попросил знать, как он может запомнить синтаксис, именно это я и пытался объяснить. Что-то не так, как я говорил? – codymanix

-1

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