2009-09-15 33 views
6

¿Alguien tiene un buen truco para recordar la sintaxis ternaria estándar?Recordando la sintaxis del operador ternario

Específicamente si el '?' o ':' viene primero. Constantemente he conseguido esto al revés a lo largo de los años.

+5

nunca pensé que fuera posible hacer esto al revés ... –

+2

operatorName = isPedantic()? "condicional": "ternario"; –

+5

¿Por qué el odio en esta pregunta? Es un poco ligero, pero quiero decir, no es como "Hechos de Jon Skeet" o algo así. – Chuck

Respuesta

21

La condición que está revisando es como una pregunta, por lo que el signo de interrogación es lo primero.

x > 0 ? 1 : 0 

Piense en esta declaración como tres frases en inglés: "¿Es x mayor que 0 Luego 1. Si no, 0.?" Tienes una oración para cada cláusula en la declaración.

El predicado:

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

La "verdadera" sucursal:

1 /* Then 1. */ 

El "falso" rama:

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

Hay un caso especial de 42 respuestas que viene antes de la pregunta. –

+0

gracias, el truco de la "pregunta" debería funcionar bien para mí –

0

Dice así:

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

en Python que leerlo como una normal de condena Inglés:

a equals b if condition is true else c 
+3

¿Estoy en lo cierto al pensar que los votantes que votan son celosos porque su idioma de elección es tan lento? – SilentGhost

+0

Quizás lo sean (no soy uno de ellos por cierto), pero su respuesta tampoco es particularmente útil para esta pregunta. Nadie tiene problemas para recordar el orden de las palabras clave en el equivalente de Python. Esa es una de las mejores cosas de Python. La BDFL y la comunidad se toman tantas molestias para que el lenguaje sea lo más placentero, legible y consistente posible. Pero saberlo no necesariamente te ayuda con los lenguajes tipo C. –

+0

@A. Levy: con exactamente la misma cara seria podría afirmar que nadie tiene problemas para recordar la sintaxis estilo C porque es más natural producir "pregunta/sí/no" en lugar de "pregunta/no/sí". – SilentGhost

9

En cuanto a recordar qué símbolo es lo primero, sólo pienso en el hecho de que la primera parte es una pregunta: "¿Es verdad o no? ", por lo que el signo de interrogación va primero.

pienso en la sintaxis de este modo

Question ? Yes : No 
0

creo que de esta manera: una declaración ternaria se compone de tres partes: la pregunta, el código que se ejecuta si la respuesta a la pregunta es "sí" y el código si la respuesta es "no". Los "?" viene después de la pregunta como lo hace en oraciones en inglés.

0

"?" es un signo de interrogación, entonces significa "si".

Dos puntos significa, "ahora viene", "entonces hazlo".

Lo bueno del operador ternario es que no está obligado a usarlo, especialmente si tiene problemas para recordar la sintaxis. Simplemente use un enunciado if que sea más legible la mayoría de las veces.

Y no, el ternario no tiene una mejor ejecución que una instrucción if.

+0

¿Por qué -1? El OP pidió saber cómo él puede recordar la sintaxis, eso es exactamente lo que traté de explicar. ¿Estaba diciendo algo malo? – codymanix

-1

Si aún fallan las pruebas unitarias cuando lo hace incorrectamente, entonces no importa o sus pruebas no cubren suficientes rutas a través del código. Si hay una brecha demasiado larga entre escribirlo y obtener un aprobado/reprobado de las pruebas, ese es otro problema. Muy pocas pequeñas sintaxis importan en presencia de pruebas buenas y rápidas.

Cuestiones relacionadas