Сценарий кофе: если .. есть .. тогда - PullRequest
1 голос
/ 10 марта 2012

Я пишу игру ножницами для рок-бумаги с Coffee Script, и код не компилируется, как я ожидал.

CoffeeScript

if choice is opponent_choice then alert "Tie!"

Компилируется в

if (choice === opponent_choice) alert("Tie!");

Но я ожидал

if (choice === opponent_choice) {
alert("Tie!");
}

Что мне нужно изменить, чтобы это компилировалось так, как я ожидал?

Ответы [ 4 ]

16 голосов
/ 10 марта 2012

Если в строке есть только одно утверждение, вам не нужны скобки. Они функционально идентичны, и компилятор coffeescript оптимизирует вывод для использования наименьшего количества символов.

5 голосов
/ 10 марта 2012

Почему это важно?

Для CS для создания блока / многострочного then вам необходимо иметь многострочное then, например:

if choice is opponent_choice
  alert "Tie!"
  alert "Foo"

Который компилируется в:

if (choice === opponent_choice) {
  alert("Tie!");
  alert("Foo");
}
3 голосов
/ 10 марта 2012

Измените свое ожидание, а не вывод.


Редактировать: добавить некоторые детали

CoffeeScript - прекрасный инструмент, не только более короткий способ написания кода (который он есть), но и переформатирование многих общих шаблонов в хороший javascript. Вывод часто менее читабелен, чем то, что вы могли бы написать самостоятельно в javascript, но то, что он теряет в ясности, он выигрывает в улучшенных шаблонах программирования.

Вы должны рассматривать CoffeeScript как источник, а не скомпилированный вывод. Вы не мечтали бы отредактировать скомпилированный вывод с других языков? (Я знаю, что аналогия немного натянута - но суть остается, источник для чтения / записи и скомпилированный вывод для выполнения).

0 голосов
/ 14 сентября 2014
// Generated by CoffeeScript 1.7.1

Я использую кофе этой версии и могу компилировать так, как вы ожидали.

(function() {
  if (choice === opponent_choice) {
    alert("Tie!");
  }

}).call(this);

Вы можете попробовать. Однако я рекомендую вам не обращать слишком много внимания на скомпилированный вывод. Это не имеет значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...