Ich muss einen Wert festlegen a
, der von einer Bedingung abhängt.
Was ist der kürzeste Weg, dies mit CoffeeScript zu tun?
So würde ich es beispielsweise in JavaScript machen:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
javascript
coffeescript
ternary-operator
evfwcqcg
quelle
quelle
if else then
</ rant>a = true ? 5 : 10
es sich um gültiges Kaffeeskript handelt, aber keine ternäre Struktur bedeutet, sondern (in Javascript) bedeutet:a = true ? true : {5:10}
was als schlechte Sache bekannt ist® Zusätzlich ist es danna = false ? {5 : 10}
in Coffeescript (in Javascript) Äquivalent zu:a = true ? false : {5:10}
Für das, was es wert ist, finde ich es nicht gut.beast = yeti ? "bear"
oderif yeti? then alert "It's a yeti!"
macht das?
ganz gut.if/then/else
bereits ein Ausdruck ist und dasselbe tut. Wenn Sie es wirklich vermissen, sind Sie eher an die C- oder JavaScript-Syntax gewöhnt, als dass Sie es wirklich brauchen. Wenn es nicht lesbar genug ist und es manchmal vorkommt, setzen Sie einfach den gesamten Ausdruck in Klammern. Der Operator?
wurde von nützlicheren Überprüfungen verschont, die in JavaScript fehlen, wie bereits von @PaulOliver angegeben. Existenzieller Operator ist der beste.Antworten:
Da alles ein Ausdruck ist und somit zu einem Wert führt, können Sie ihn einfach verwenden
if/else
.Weitere Informationen zu Ausdrucksbeispielen finden Sie hier .
quelle
if..then..else
ein zu ausführlicher Ersatz für das ist, was ein prägnanter Ausdruck sein soll. Und ?: Ist immerhin ein sehr tief verwurzelter Standard in vielen Sprachen, darunter auch JavaScript. Ungeachtet dessen scheint es zu diesem Zeitpunkt in Stein gemeißelt zu sein.]if then else
in derselben Zeile verwenden können, sind es 7 zusätzliche Zeichen für viel mehr Klarheit und Eleganz.->
überfunction
oder{ }
überbegin .. end
, weil ich ein hohes Signal-Rausch-Verhältnis sehen möchte, bei dem die Wörter für funktionsspezifische Logik reserviert sind und die Betriebslogik größtenteils verbannt ist zu Symbolen.Siehe Dokumentation .
quelle
In fast jeder Sprache sollte dies stattdessen funktionieren:
quelle
false
Werte wie 0, null, undefiniert usw. implizit konvertiert werden&&
Markierung wahr ist, andernfalls würde der letzte Teil zurückgegeben, so wie bedingte Ternäre nicht funktionieren.Coffeescript unterstützt keinen ternären Javascript-Operator. Hier ist der Grund vom Coffeescript-Autor :
Weitere Informationen finden Sie im Github-Problem: https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802
quelle
Sie können es auch in zwei Anweisungen schreiben, wenn es meistens wahr ist:
Oder verwenden Sie eine switch-Anweisung, wenn Sie weitere Möglichkeiten benötigen:
Mit einem Booleschen Wert kann es übergroß sein, aber ich finde es sehr lesbar.
quelle
Mehrzeilige Version (z. B. wenn Sie nach jeder Zeile einen Kommentar hinzufügen müssen):
quelle
CoffeeScript
hat keinen ternären Operator. Das sagen die Dokumente.Sie können weiterhin eine Syntax wie verwenden
Es ist viel klarer.
quelle