Мне нужно установить значение a
, которое зависит от условия.
Каков самый короткий способ сделать это с помощью CoffeeScript?
например. вот как я сделал бы это в JavaScript:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
Мне нужно установить значение a
, которое зависит от условия.
Каков самый короткий способ сделать это с помощью CoffeeScript?
например. вот как я сделал бы это в JavaScript:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
Поскольку все является выражением и, следовательно, приводит к значению, вы можете просто использовать if/else
.
a = if true then 5 else 10
a = if false then 5 else 10
Подробнее о примерах выражения здесь.
a = if true then 5 else 10
a = if false then 5 else 10
См. документация.
Почти на любом языке это должно работать вместо:
a = true && 5 || 10
a = false && 5 || 10
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
Вы также можете записать его в двух операциях, если это в основном верно:
a = 5
a = 10 if false
Или используйте оператор switch, если вам нужно больше возможностей:
a = switch x
when true then 5
when false then 10
С булевым он может быть увеличен, но я считаю его очень читаемым.
Многострочная версия (например, если вам нужно добавить комментарий после каждой строки):
a = if b # a depends on b
then 5 # b is true
else 10 # b is false