Das gefällt mir wirklich gut:
var value = maxValue > minValue ? minValue : maxValue;
Gibt es etwas ebenso Prägnantes in Coffescript?
Das gefällt mir wirklich gut:
var value = maxValue > minValue ? minValue : maxValue;
Gibt es etwas ebenso Prägnantes in Coffescript?
Antworten:
value = if maxValue > minValue then minValue else maxValue
value = `maxValue > minValue ? minValue : maxValue`
value = Math.min minValue, maxValue
Es gibt eine weitere knappe Option sowohl in Javascript und Coffeescript :)
value = Math.min(minValue, maxValue)
value = Math.min minValue, maxValue
;)
Conditional operator in Coffeescript
nach dem JS
Beispiel und wie man es schreibt . Es ist nur ein Beispiel und hat nichts mit dem eigentlichen Syntaxproblem zu tun.
Wie Răzvan Panda betont, könnte mein Kommentar tatsächlich eine der besseren Antworten sein:
value = `maxValue > minValue ? minValue : maxValue`
Dies ist ein Fall, in dem es sich anfühlt, als hätte CoffeeScript konkurrierende Philosophien:
Da alle Operationen ein Ergebnis zurückgeben, gibt Ihnen die if / then / else-Vorgehensweise das, was Sie benötigen. Das Hinzufügen des Operators? /: Ist redundant.
Hier wünschte ich mir, sie würden uns den ternären Operator? /: Geben, obwohl er redundant ist ... er liest sich einfach besser als die if / then / else-Variante.
Nur mein 2c.
a ? b : c
Ternär in CoffeeScript ohne Mehrdeutigkeit zu haben, da a ? b
es eine Bedeutung hat (" a
wenn es nicht null ist, b
sonst) und b: c
auch eine ( {b: c}
).
In der Dokumentation gibt es einen Abschnitt mit dem Titel "Bedingungen, Ternäre und bedingte Zuweisung" . Dies lässt vermuten, dass Coffeescript unterstützt
condition ? when-true : when-false
aber in der Tat nicht.
Hier ist der Patch (und er wird an coffeescript.org gesendet ):
http://github.com/jashkenas/coffee-script/commit/ec2d358ae3c82e9888c60695d7cce05edde0c55a
mood = greatlyImproved if singing
if happy and knowsIt
clapsHands()
chaChaCha()
else
showIt()
date = if friday then sue else jill
options or= defaults
if then else
ist eine ternäre Operation, sie hat nur eine andere Syntax.
if then else
Anweisung wird als ternär klassifiziert . Der korrekte Begriff für den "ternären" Operator in Javascript ist ohnehin ein bedingter Operator .
value = maxValue > minValue && minValue || maxValue
Dies ist eigentlich nicht korrekt, überprüfen Sie die Kommentare.
minValue
gleich 0
und maxValue
gleich 5
, dann maxValue > minValue ? minValue : maxValue
würde zurückkehren 0
, während zurückkehren maxValue > minValue && minValue || maxValue
würde 5
.