Тройная операция в CoffeeScript

Мне нужно установить значение a, которое зависит от условия.

Каков самый короткий способ сделать это с помощью CoffeeScript?

например. вот как я сделал бы это в JavaScript:

a = true  ? 5 : 10  # => a = 5
a = false ? 5 : 10  # => a = 10

Ответ 1

Поскольку все является выражением и, следовательно, приводит к значению, вы можете просто использовать if/else.

a = if true then 5 else 10
a = if false then 5 else 10

Подробнее о примерах выражения здесь.

Ответ 3

Почти на любом языке это должно работать вместо:

a = true  && 5 || 10
a = false && 5 || 10

Ответ 4

Coffeescript не поддерживает javascript тройной оператор. Вот причина от автора coffeescript:

Мне нравятся троичные операторы так же, как и следующий парень (возможно, немного больше, на самом деле), но синтаксис не делает их хорошими - они отлично, потому что они могут соответствовать if/else на одной строке как выражение.

Их синтаксис - это еще один бит загадочной магии для запоминания, с не имеет аналогов ни на одном другом языке. Результат равен, Я бы предпочел if/elses всегда выглядеть одинаково (и всегда быть скомпилирован в выражение).

Итак, в CoffeeScript даже многострочные ifs скомпилируются в тройки когда это необходимо, как и в случае, если инструкции без предложения else:

if sunny   
  go_outside() 
else   
  read_a_book().

if sunny then go_outside() else read_a_book()

Оба становятся тройными, и оба могут использоваться как выражения. Это непротиворечиво, и нет нового синтаксиса для изучения. Итак, спасибо за предложение, но я закрываю это билет как "wontfix".

Обратитесь к проблеме github: https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802

Ответ 5

Вы также можете записать его в двух операциях, если это в основном верно:

a = 5
a = 10 if false

Или используйте оператор switch, если вам нужно больше возможностей:

a = switch x
  when true then 5
  when false then 10

С булевым он может быть увеличен, но я считаю его очень читаемым.

Ответ 6

Многострочная версия (например, если вам нужно добавить комментарий после каждой строки):

a = if b # a depends on b
then 5   # b is true 
else 10  # b is false