Ich muss den Wert auf a
setzen, der von einer Bedingung abhängt.
Was ist der kürzeste Weg, dies mit CoffeeScript zu tun?
Z.B. So mache ich es in JavaScript:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
Da alles ein Ausdruck ist und somit ein Wert entsteht, können Sie einfach if/else
verwenden.
a = if true then 5 else 10
a = if false then 5 else 10
Mehr über Ausdrucksbeispiele hier .
a = if true then 5 else 10
a = if false then 5 else 10
Siehe Dokumentation .
In fast jeder Sprache sollte dies funktionieren:
a = true && 5 || 10
a = false && 5 || 10
Coffeescript unterstützt den ternären Javascript-Operator nicht. Hier ist der Grund des coffeescript-Autors:
Ich liebe ternäre Operatoren genauso wie der nächste (wahrscheinlich ein bisschen mehr .__ mehr), aber die Syntax macht sie nicht gut - sie sind großartig, weil sie ein if/else in eine einzige Zeile als .__ einfügen können. Ausdruck.
Ihre Syntax ist nur ein weiteres Stück mystifizierender Zauberei, mit Kein Analogon zu etwas anderem in der Sprache. Das Ergebnis ist gleich, Ich hätte lieber
if/elses
immer gleich aussehen (und immer In einen Ausdruck kompiliert sein).In CoffeeScript werden sogar mehrzeilige ifs in Ternaries wenn zutreffend, wie auch wenn Anweisungen ohne eine else-Klausel:
if sunny go_outside() else read_a_book(). if sunny then go_outside() else read_a_book()
Beide werden zu Ternaren, beide können als Ausdrücke verwendet werden. Es ist konsistent und es gibt keine neue Syntax zum Lernen. Vielen Dank für den Vorschlag, aber ich schließe das Ticket als "wontfix".
Bitte lesen Sie die Github-Ausgabe: https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802
Sie können es auch in zwei Anweisungen schreiben, wenn es meistens richtig ist:
a = 5
a = 10 if false
Oder verwenden Sie eine switch-Anweisung, wenn Sie mehr Möglichkeiten benötigen:
a = switch x
when true then 5
when false then 10
Mit einem Boolean kann es übergroß sein, aber ich finde es sehr gut lesbar.
Mehrzeilige Version (z. B. wenn Sie nach jeder Zeile einen Kommentar hinzufügen müssen):
a = if b # a depends on b
then 5 # b is true
else 10 # b is false
CoffeeScript
hat keinen ternären Operator. Das sagen die Dokumente.
Sie können immer noch eine ähnliche Syntax verwenden
a = true then 5 else 10
Es ist viel klarer.