Muszę ustawić wartość, a
która zależy od warunku.
Jaki jest najkrótszy sposób, aby to zrobić za pomocą CoffeeScript?
Np. Tak zrobiłbym to w JavaScript:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
javascript
coffeescript
ternary-operator
evfwcqcg
źródło
źródło
if else then
</rant>a = true ? 5 : 10
jest to prawidłowy skrypt coffeescript, ale nie oznacza on struktury trójskładnikowej, zamiast tego (w javascript) oznacza to:a = true ? true : {5:10}
co jest znane jako zła rzecz. Dodatkowoa = false ? {5 : 10}
w coffeescript (w javascript) odpowiednik:a = true ? false : {5:10}
za to, co jest warte, nie sądzę, aby było dobre.beast = yeti ? "bear"
lubif yeti? then alert "It's a yeti!"
marki użyć?
całkiem dobrze.if/then/else
jest już wyrażeniem i robi to samo. Jeśli naprawdę tego brakuje, to raczej przyzwyczajasz się do składni C lub JavaScript, niż naprawdę jej potrzebujesz. Jeśli nie jest wystarczająco czytelny, a czasem się zdarza, po prostu zawiń całe wyrażenie w nawiasach.?
Oszczędzono operatorowi bardziej przydatne kontrole, których nie ma w JavaScript, jak już stwierdził @PaulOliver. Operator egzystencjalny jest najlepszy.Odpowiedzi:
Ponieważ wszystko jest wyrażeniem, a tym samym daje wartość, możesz po prostu użyć
if/else
.Więcej informacji o przykładach wyrażeń można znaleźć tutaj .
źródło
if..then..else
jest zbyt szczegółowe, zastępuje to, co ma być zwięzłym wyrażeniem. A?: Jest przecież bardzo zakorzenionym standardem wśród wielu języków, w tym JavaScript. Mimo to wydaje się, że na tym etapie jest on osadzony w kamieniu.]if then else
tej samej linii, zrób to, to 7 dodatkowych znaków dla znacznie większej przejrzystości i elegancji.->
Powyżejfunction
lub{ }
powyżejbegin .. end
, ponieważ lubię widzieć wysoki stosunek sygnału do szumu, w którym słowa są zarezerwowane dla logiki specyficznej dla funkcji, a logika operacyjna jest w większości relegowana do symboli.Zobacz dokumentację .
źródło
W prawie każdym języku powinno to działać:
źródło
false
wartości takie jak 0, null, undefined,… i tak dalej&&
znaku jest zgodna z prawdą, w przeciwnym razie zwróci ostatnią część, co nie jest sposobem działania trójskładników warunkowych.Coffeescript nie obsługuje trójskładnikowego operatora javascript. Oto powód autora coffeescript :
Proszę odnieść się do problemu github: https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802
źródło
Możesz również napisać to w dwóch instrukcjach, jeśli jest to w większości przypadków prawdziwe użycie:
Lub użyj instrukcji switch, jeśli potrzebujesz więcej możliwości:
Z boolean może być zbyt duży, ale uważam, że jest bardzo czytelny.
źródło
Wersja wielowierszowa (np. Jeśli musisz dodać komentarz po każdym wierszu):
źródło
CoffeeScript
nie ma operatora trójskładnikowego. Tak mówią doktorzy.Nadal możesz używać podobnej składni
To o wiele wyraźniejsze.
źródło