Мені це дуже подобається:
var value = maxValue > minValue ? minValue : maxValue;
Чи є щось настільки ж лаконічне в Coffescript?
Мені це дуже подобається:
var value = maxValue > minValue ? minValue : maxValue;
Чи є щось настільки ж лаконічне в Coffescript?
Відповіді:
value = if maxValue > minValue then minValue else maxValue
value = `maxValue > minValue ? minValue : maxValue`
value = Math.min minValue, maxValue
Існує більш стислий варіант як у javascript, так і в coffeescript :)
value = Math.min(minValue, maxValue)
value = Math.min minValue, maxValue
,;)
Conditional operator in Coffeescript
те, як це написати, подаючи JS
приклад. Це лише приклад і не має нічого спільного з фактичною проблемою синтаксису.
Як зазначає Резван Панда, мій коментар насправді може бути однією з кращих відповідей:
value = `maxValue > minValue ? minValue : maxValue`
Це випадок, коли здається, що CoffeeScript має конкуруючі філософії:
Оскільки всі операції повертають результат, спосіб дії if / then / else дає вам те, що вам потрібно. Додавання оператора? /: Зайве.
Тут я хотів би, щоб вони дали нам тернарний оператор? /:, Хоча він надлишковий ... він просто читається краще, ніж варіант if / then / else.
Тільки моя 2c.
a ? b : c
тернар у CoffeeScript без однозначності, оскільки він a ? b
має значення (" a
якщо воно не є нульовим, b
інакше), а також b: c
має його також ( {b: c}
).
У документації є розділ під назвою "Умовники, тернари та умовне призначення" . Це наводить на думку, що coffeescript підтримує
condition ? when-true : when-false
але насправді це не так.
Ось патч (і він перенесений на coffeescript.org ):
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
є потрійною операцією, вона просто має інший синтаксис.
if then else
твердження класифікується як потрійне . Правильний термін для «потрійного» оператора в javascript - це умовний оператор .
value = maxValue > minValue && minValue || maxValue
Це насправді не правильно, перевірте коментарі.
minValue
дорівнює 0
і maxValue
дорівнює 5
, то maxValue > minValue ? minValue : maxValue
повернеться 0
, тоді як maxValue > minValue && minValue || maxValue
повернеться 5
.