javascript - loop - coffeescript vs typescript
OperaciĆ³n ternaria en CoffeeScript (7)
Coffeescript no admite el operador ternario javascript. Aquí está la razón del autor del coffeescript :
Me encantan los operadores ternarios tanto como el siguiente tipo (probablemente un poco más, en realidad), pero la sintaxis no es lo que los hace buenos, son geniales porque pueden encajar un if / else en una sola línea como un expresión.
Su sintaxis es solo un poco más de magia desconcertante para memorizar, sin análogo a ninguna otra cosa en el idioma. Siendo el resultado igual, preferiría tener
if/elses
siempre se ve igual (y siempre se compila en una expresión).Por lo tanto, en CoffeeScript, incluso los ifs multilínea se compilarán en ternarios cuando sea apropiado, al igual que las sentencias if sin una cláusula else:
if sunny go_outside() else read_a_book(). if sunny then go_outside() else read_a_book()
Ambos se convierten en ternarios, ambos pueden ser utilizados como expresiones. Es consistente, y no hay nueva sintaxis que aprender. Entonces, gracias por la sugerencia, pero estoy cerrando este ticket como "wontfix".
Consulte el problema de github: github.com/jashkenas/coffeescript/issues/11#issuecomment-97802
Necesito establecer un valor que 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
Dado que todo es una expresión, y por lo tanto resulta en un valor, solo puede usar if/else
.
a = if true then 5 else 10
a = if false then 5 else 10
Puedes ver más sobre ejemplos de expresiones here .
En casi cualquier idioma, esto debería funcionar en su lugar:
a = true && 5 || 10
a = false && 5 || 10
También puede escribirlo en dos declaraciones si es sobre todo uso verdadero:
a = 5
a = 10 if false
O use una instrucción de cambio si necesita más posibilidades:
a = switch x
when true then 5
when false then 10
Con un booleano puede ser demasiado grande pero lo encuentro muy legible.
Versión multilínea (por ejemplo, si necesita agregar comentarios después de cada línea):
a = if b # a depends on b
then 5 # b is true
else 10 # b is false
CoffeeScript
no tiene operador ternario. Eso es lo que dicen los doctores.
Todavía puedes usar una sintaxis como
a = true then 5 else 10
Es mucho más claro.
a = if true then 5 else 10
a = if false then 5 else 10
Ver documentation .