Условный оператор в Coffeescript


Мне очень нравится этот:

var value = maxValue > minValue ? minValue : maxValue;

есть ли что-то столь же лаконичное в Coffescript?

7 65

7 ответов:

value = if maxValue > minValue then minValue else maxValue

есть больше краткий вариант как в javascript, так и в coffeescript:)

value = Math.min(minValue, maxValue)

Как указывает Рэзван Панда, мой комментарий может на самом деле один из лучших ответов:

value = `maxValue > minValue ? minValue : maxValue`

Это тот случай, когда кажется, что CoffeeScript имеет конкурирующие философии:

  1. быть краткими
  2. не будут лишними

поскольку все операции возвращают результат, способ 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
value = maxValue > minValue && minValue || maxValue

Это на самом деле не правильно, проверьте комментарии.