Мне нужно установить значение, a
которое зависит от условия.
Какой самый короткий способ сделать это с CoffeeScript?
Например, вот как я бы сделал это в JavaScript:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
javascript
coffeescript
ternary-operator
evfwcqcg
источник
источник
if else then
</ rant>a = true ? 5 : 10
является действительным CoffeeScript, но не означает трехкомпонентную структуру, вместо (в JavaScript) , это означает:a = true ? true : {5:10}
который известен как плохой thing® Кроме того ,a = false ? {5 : 10}
в CoffeeScript затем (в JavaScript) является эквивалентно:a = true ? false : {5:10}
за то, что это стоит, я не думаю, что это хорошо.beast = yeti ? "bear"
илиif yeti? then alert "It's a yeti!"
делает использование?
довольно хорошо.if/then/else
он уже является выражением и делает то же самое. Если вам действительно не хватает этого, то вы скорее привыкли к синтаксису C или JavaScript, чем действительно в этом нуждаетесь. Если он недостаточно читабелен и иногда это происходит, просто заключите все выражение в скобки. Оператор?
был избавлен от более полезных проверок, которые отсутствуют в JavaScript, как уже было сказано @PaulOliver. Экзистенциальный оператор самый лучший.Ответы:
Поскольку все является выражением и, следовательно, приводит к значению, вы можете просто использовать
if/else
.Вы можете увидеть больше примеров выражения здесь .
источник
if..then..else
это слишком многословная замена для того, что должно быть кратким выражением. И?: В конце концов, это очень укоренившийся стандарт для многих языков, в том числе для JavaScript. Несмотря на все это, на данном этапе кажется, что этоif then else
одну и ту же строку, сделайте это, это 7 дополнительных символов для большей ясности и элегантности.->
надfunction
или{ }
надbegin .. end
, потому что мне нравится видеть высокое отношение сигнал / шум, когда слова зарезервированы для логики, зависящей от функции, а операционная логика в основном откладывается к символам.Смотрите документацию .
источник
Почти на любом языке это должно работать вместо:
источник
false
значения, такие как 0, ноль, неопределенное и т. Д.&&
метки верна, в противном случае она вернет последнюю часть, что не так, как работают условные троицы.Coffeescript не поддерживает троичный оператор javascript. Вот причина от автора coffeescript :
Пожалуйста, обратитесь к проблеме GitHub: https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802
источник
Вы также можете написать это в двух утверждениях, если это в основном верно:
Или используйте оператор switch, если вам нужно больше возможностей:
С логическим значением он может быть больше, но я нахожу его очень читабельным.
источник
Многострочная версия (например, если вам нужно добавить комментарий после каждой строки):
источник
CoffeeScript
не имеет троичного оператора. Вот что говорят доктора.Вы все еще можете использовать такой синтаксис, как
Это намного понятнее.
источник