Je dois définir la valeur sur a
qui dépend d'une condition.
Quel est le moyen le plus rapide de faire cela avec CoffeeScript?
Par exemple. Voici comment je le ferais en JavaScript:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
Puisque tout est une expression et qu’il en résulte une valeur, vous pouvez simplement utiliser if/else
.
a = if true then 5 else 10
a = if false then 5 else 10
Vous pouvez en savoir plus sur les exemples d'expression ici .
a = if true then 5 else 10
a = if false then 5 else 10
Voir documentation .
Dans presque toutes les langues, cela devrait fonctionner à la place:
a = true && 5 || 10
a = false && 5 || 10
Coffeescript ne supporte pas l'opérateur ternaire javascript . Voici la raison de l'auteur coffeescript:
J'adore les opérateurs ternaires tout autant que le type à côté (probablement un peu Plus, en fait), mais la syntaxe n'est pas ce qui les rend bons - ils sont super parce qu’ils peuvent adapter un if/else sur une seule ligne en tant que expression.
Leur syntaxe est juste une autre magie mystifiante à mémoriser, avec aucun analogue à rien d'autre dans la langue. Le résultat étant égal, Je préférerais que
if/elses
soit toujours identique (et toujours compilé en une expression).Ainsi, dans CoffeeScript, même les if multi-lignes seront compilées en ternaires le cas échéant, comme le seront les déclarations sans clause else:
if sunny go_outside() else read_a_book(). if sunny then go_outside() else read_a_book()
Les deux deviennent des ternaires, les deux peuvent être utilisés comme expressions. C'est cohérent et il n'y a pas de nouvelle syntaxe à apprendre. Donc, merci pour la suggestion, mais je ferme ce ticket comme "wontfix".
Veuillez vous reporter au numéro de github: https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802
Vous pouvez aussi l'écrire en deux déclarations si c'est la plupart du temps vrai:
a = 5
a = 10 if false
Ou utilisez une instruction switch si vous avez besoin de plus de possibilités:
a = switch x
when true then 5
when false then 10
Avec un booléen, il peut être surdimensionné mais je le trouve très lisible.
Version multiligne (par exemple, si vous devez ajouter un commentaire après chaque ligne):
a = if b # a depends on b
then 5 # b is true
else 10 # b is false
CoffeeScript
n'a pas d'opérateur ternaire. C'est ce que disent les docs.
Vous pouvez toujours utiliser une syntaxe comme
a = true then 5 else 10
C'est beaucoup plus clair.