Necesito establecer un valor para a
eso depende de una condición.
¿Cuál es la forma más corta de hacer esto con CoffeeScript?
Por ejemplo, así es como lo haría en JavaScript:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
javascript
coffeescript
ternary-operator
evfwcqcg
fuente
fuente
if else then
</rant>a = true ? 5 : 10
es un coffeescript válido, pero no significa una estructura ternaria, sino que (en javascript) significa: loa = true ? true : {5:10}
que se conoce como algo malo® Ademása = false ? {5 : 10}
en coffeescript entonces (en javascript) es equivalente a:a = true ? false : {5:10}
Por lo que vale, no creo que sea bueno.beast = yeti ? "bear"
oif yeti? then alert "It's a yeti!"
hace el uso?
bastante bien.if/then/else
es una expresión y hace lo mismo. Si realmente lo falta, entonces está más acostumbrado a la sintaxis de C o JavaScript que realmente lo necesita. Si no es lo suficientemente legible, y a veces sucede, simplemente envuelva la expresión completa entre paréntesis. El operador?
se ha ahorrado para verificaciones más útiles que están ausentes en JavaScript, como ya dijo @PaulOliver. El operador existencial es el mejor.Respuestas:
Como todo es una expresión y, por lo tanto, da como resultado un valor, puede usarlo
if/else
.Puede ver más sobre ejemplos de expresiones aquí .
fuente
if..then..else
es un reemplazo demasiado detallado para lo que se supone que es una expresión concisa. Y?: Después de todo, es un estándar muy arraigado entre muchos idiomas, JavaScript entre ellos. A pesar de todo eso, parece estarif then else
en la misma línea, hágalo, son 7 caracteres adicionales para mucha más claridad y elegancia.->
overfunction
o{ }
overbegin .. end
, porque me gusta ver una alta relación señal / ruido, donde las palabras están reservadas para la lógica específica de la función y la lógica operativa está principalmente relegada a los símbolosVer documentación .
fuente
En casi cualquier idioma, esto debería funcionar en su lugar:
fuente
false
de valores como 0, nulo, indefinido, ... y así sucesivamente&&
marca es verdadera, de lo contrario devolvería la última parte, que no es cómo funcionan los terrarios condicionales.Coffeescript no admite el operador ternario de javascript. Aquí está la razón del autor del coffeescript :
Consulte el problema de github: https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802
fuente
También puede escribirlo en dos declaraciones si en su mayoría es un uso verdadero:
O use una declaración de cambio si necesita más posibilidades:
Con un booleano puede ser de gran tamaño, pero me parece muy legible.
fuente
Versión multilínea (por ejemplo, si necesita agregar comentarios después de cada línea):
fuente
CoffeeScript
no tiene operador ternario. Eso es lo que dicen los documentos.Todavía puedes usar una sintaxis como
Es mucho más claro.
fuente