web-dev-qa-db-fra.com

Opérateur conditionnel dans Coffeescript

J'aime vraiment ça:

var value = maxValue > minValue ? minValue : maxValue;

Y a-t-il quelque chose d'aussi concis dans Coffeescript?

69
Blub
value = if maxValue > minValue then minValue else maxValue
132
Tim Cooper

Il y a une option concise plus en javascript et coffeescript :)

value = Math.min(minValue, maxValue)
21
Ricardo Tomasi

Comme le souligne Răzvan Panda, mon commentaire pourrait en fait être l'une des meilleures réponses:

value = `maxValue > minValue ? minValue : maxValue`
12
Peter Krnjevic

C'est un cas où on a l'impression que CoffeeScript a des philosophies concurrentes:

  1. Soyez concis
  2. Ne soyez pas redondant

Puisque toutes les opérations renvoient un résultat, la façon de faire si/alors/sinon vous donne ce dont vous avez besoin. L'ajout de l'opérateur? /: Est redondant.

C'est là que je souhaite qu'ils nous donnent l'opérateur? /: Ternaire même s'il est redondant ... il se lit simplement mieux que la variante if/then/else.

Juste mon 2c.

10
Brian Genisio

Vous pouvez l'écrire comme ceci:

value = if maxValue > minValue then minValue else maxValue

Il se compilera comme votre code.

3
v42

Voici le fait:

Dans la documentation, il y a une section intitulée "Conditions, ternaires et affectation conditionnelle" . Cela porte à croire que coffeescript prend en charge

condition ? when-true : when-false 

mais en fait ce n'est pas le cas.

Voici les informations sur le correctif qui résoudra ce problème

Voici le patch (et il est poussé vers coffeescript.org):

http://github.com/jashkenas/coffee-script/commit/ec2d358ae3c82e9888c60695d7cce05edde0c55a

Exemples:

mood = greatlyImproved if singing

if happy and knowsIt
  clapsHands()
  chaChaCha()
else
  showIt()

date = if friday then sue else jill

options or= defaults
3
Siva Charan