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 Coffeescriptnach dem JSBeispiel 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 : cTernär in CoffeeScript ohne Mehrdeutigkeit zu haben, da a ? bes eine Bedeutung hat (" awenn es nicht null ist, bsonst) und b: cauch 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 elseAnweisung 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.
minValuegleich 0und maxValuegleich 5, dann maxValue > minValue ? minValue : maxValuewürde zurückkehren 0, während zurückkehren maxValue > minValue && minValue || maxValuewürde 5.