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

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

var value = maxValue > minValue ? minValue : maxValue;

В Coffescript есть что-то столь же сжатое?

Ответ 1

value = if maxValue > minValue then minValue else maxValue

Ответ 2

В javascript и coffeescript есть более сжатый вариант:)

value = Math.min(minValue, maxValue)

Ответ 3

Как отмечает Răzvan Panda, мой комментарий может на самом деле один из лучших ответов:

value = `maxValue > minValue ? minValue : maxValue`

Ответ 4

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

  • Будьте лаконичны
  • Не дублируйте

Поскольку все операции возвращают результат, метод if/then/else делает то, что вам нужно. Добавление оператора? /: Является избыточным.

Вот где я хочу, чтобы они передали нам оператор:/: trernary, даже если он избыточен... он просто читается лучше, чем вариант if/then/else.

Просто мой 2c.

Ответ 5

Вы можете написать это следующим образом:

value = if maxValue > minValue then minValue else maxValue

Он будет компилироваться как ваш код.

Ответ 6

Ниже приведено следующее:

В документации есть раздел под названием "Условные, тройные и условные присвоения" . Это заставляет думать, что 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

Ответ 7

value = maxValue > minValue && minValue || maxValue

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