Мені це дуже подобається:
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.