Условный оператор в Coffeescript
Мне очень нравится этот:
var value = maxValue > minValue ? minValue : maxValue;
есть ли что-то столь же лаконичное в Coffescript?
7 ответов:
есть больше краткий вариант как в javascript, так и в coffeescript:)
value = Math.min(minValue, maxValue)
Как указывает Рэзван Панда, мой комментарий может на самом деле один из лучших ответов:
value = `maxValue > minValue ? minValue : maxValue`
Это тот случай, когда кажется, что CoffeeScript имеет конкурирующие философии:
- быть краткими
- не будут лишними
поскольку все операции возвращают результат, способ if / then / else дает вам то, что вам нужно. Добавление ?/ : оператор является избыточным.
вот где я хотел бы, чтобы они дали нам?/ : тернарный оператор, даже если он является избыточным... он просто читает лучше, чем if / then / else вариант.
только мой 2c.
вы можете написать это так:
value = if maxValue > minValue then minValue else maxValue
Он будет компилировать ваш код.
Ниже приведен факт:
в документации есть раздел под названием "условные, троичные и условное присвоение". Это заставляет поверить, что 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