Условный оператор в Coffeescript - PullRequest
68 голосов
/ 17 ноября 2011

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

var value = maxValue > minValue ? minValue : maxValue;

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

Ответы [ 7 ]

131 голосов
/ 17 ноября 2011
value = if maxValue > minValue then minValue else maxValue
20 голосов
/ 18 ноября 2011

Существует краткая опция more в javascript и coffeescript:)

value = Math.min(minValue, maxValue)
12 голосов
/ 07 июня 2014

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

value = `maxValue > minValue ? minValue : maxValue`
10 голосов
/ 17 ноября 2011

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

  1. Будь лаконичен
  2. Не будь лишним

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

Здесь я бы хотел, чтобы они дали нам троичный оператор? /: Даже если он избыточен ... он просто читается лучше, чем if / then / elseвариант.

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

3 голосов
/ 17 ноября 2011

Вы можете написать это так:

value = if maxValue > minValue then minValue else maxValue

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

2 голосов
/ 17 ноября 2011

Ниже приведен факт:

В документации есть раздел под названием «Условные, троичные и условные присвоения» . Это наводит на мысль, что coffeescript поддерживает

condition ? when-true : when-false 

но на самом деле это не так.

Ниже приведена информация о патче, который решит эту проблему

Вот патч (и он отправляется на coffeescript.org ):

http://github.com/jashkenas/coffee-script/commit/ec2d358ae3c82e9888c60695d7cce05edde0c55a

Примеры: * 1 021 * mood = greatlyImproved if singing if happy and knowsIt clapsHands() chaChaCha() else showIt() date = if friday then sue else jill options or= defaults

0 голосов
/ 28 мая 2014
value = maxValue > minValue && minValue || maxValue

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

...