2009-09-15 20 views
6

Ktoś ma dobry trik do zapamiętania standardowej składni trójskładnikowej?Zapamiętywanie składni potrójnego operatora

W szczególności, czy znak "?" lub ":" jest na pierwszym miejscu. Od lat konsekwentnie robię to wstecz.

+5

Nigdy nie sądziłem, że można to cofnąć ... –

+2

operatorName = isPedantic()? "warunkowy": "trójskładnikowy"; –

+5

Dlaczego nienawiść na to pytanie? Jest trochę lekki, ale mam na myśli, że to nie jest "Fakty Jona Skeeta" czy coś takiego. – Chuck

Odpowiedz

21

Sprawdzany warunek jest jak pytanie, więc znak zapytania pojawia się jako pierwszy.

x > 0 ? 1 : 0 

Wyobraź sobie to zdanie jako trzy angielskie zdania: "Czy x jest większe od 0? Następnie 1. W przeciwnym razie 0." Masz jedno zdanie dla każdej klauzuli w wyciągu.

Predykat:

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

"Prawdziwa" Branża:

1 /* Then 1. */ 

z "false" Branża:

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

Istnieje specjalny przypadek 42 odpowiedzi, która pojawia się przed pytaniem. –

+0

dziękuję, sztuczka "pytanie" powinna być dla mnie wspaniała. –

0

To idzie tak:

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

w Pythonie czytałem go jako normalnego angielskiego zdaniu:

a equals b if condition is true else c 
+3

. Czy mam rację, sądząc, że osoby pogrążone w wyborach są po prostu zazdrosne, ponieważ ich język wyboru jest tak opóźniony? – SilentGhost

+0

Być może są (nie jestem jednym z nich nawiasem mówiąc), ale twoja odpowiedź również nie jest szczególnie pomocna w tym pytaniu. Nikt nie ma problemu z zapamiętaniem kolejności słów kluczowych w odpowiedniku Pythona. To jedna z najlepszych rzeczy w Pythonie. BDFL i społeczność starają się, aby język był tak przyjemny, czytelny i spójny, jak to tylko możliwe. Ale wiedząc, że to niekoniecznie pomoże ci w językach podobnych do C. –

+0

@A. Levy: z dokładnie tą samą prostą twarzą mogę twierdzić, że nikt nie ma problemu z zapamiętywaniem składni w stylu C, ponieważ bardziej naturalne jest wytwarzanie "pytania/tak/nie" niż "pytanie/nie/tak". – SilentGhost

9

miarę zapamiętywania który symbol nastąpi wcześniej, tylko myśleć o tym, że pierwsza część jest pytanie: „Czy to prawda, czy nie? ", więc znak zapytania idzie na pierwszym miejscu.

myślę o składni w ten sposób

Question ? Yes : No 
0

myśleć o tym w ten sposób: potrójny sprawozdanie składa się z trzech części: na pytanie, kod do wykonania, jeśli odpowiedź na pytanie brzmi „tak” i kod, jeśli odpowiedź brzmi "nie". "?" pojawia się po pytaniu takim, jak w angielskich zdaniach.

0

"?" jest znakiem zapytania, więc oznacza "jeśli".

Okrężnica oznacza "teraz przychodzi", "następnie".

Dobrą rzeczą dla operatora trójskładnikowego jest to, że nie jesteś zmuszony do używania go, zwłaszcza jeśli masz problemy z zapamiętaniem składni. Po prostu użyj instrukcji if, która jest bardziej czytelna.

I nie - trójskładnik nie ma lepszej wydajności niż instrukcja if.

+0

Dlaczego -1? OP zadał sobie pytanie, jak zapamiętać składnię, dokładnie to próbowałem wyjaśnić. Czy coś nie tak było? – codymanix

-1

Jeśli testy jednostkowe nadal mijają się, gdy coś jest nie tak, to albo nie ma to znaczenia, albo testy nie pokrywają wystarczającej liczby ścieżek przez kod. Jeśli jest zbyt długa przerwa między wpisaniem go a uzyskaniem pozytywnego wyniku testu, jest to kolejna kwestia. Bardzo niewiele małych składni ma znaczenie w obecności dobrych, szybkich testów.

Powiązane problemy