CoffeeScript: неожиданная ошибка INDENT - PullRequest
0 голосов
/ 18 декабря 2011

Я пробую CoffeeScript в моем приложении Rails 3.1. Однако я не могу выяснить, как разбить длинные строки в CoffeeScript, не получая Выше ошибка

Например, как / где бы вы разбили следующую строку кода

alert x for x in [1,2,3,4,5]  when x > 2

если вы хотели что-то вроде

alert x for
  x in [1,2,3,4,5]
  when x > 2

В моем vimrc я установил

 ts=2, sw=2 and I expand tabs. 

И все же я не могу заставить что-то столь же простое, как строка выше, работать должным образом

Мой Gemfile.lock показывает coffee-script-2.2.0 с coffee-script-source 1.1.3

Ответы [ 3 ]

6 голосов
/ 18 декабря 2011

Если у вас слишком длинное понимание, вы можете разбить его на \, как упоминает @brandizzi, но я думаю, что вам, возможно, повезет больше, если вы просто используете понимания, которые имеют смысл, и расширяете их до «обычного» кода, где они't:

alert x for x in [1,2,3,4,5]  when x > 2

... можно переписать как ...

for x in [1,2,3,4,5]
  alert x if x > 2

... или даже ...

for x in [1,2,3,4,5]
  if x > 2
    alert x

В другихслова, понимание - синтаксический сахар для кратких, кратких фрагментов - вам не нужно использовать их для всего.

4 голосов
/ 18 декабря 2011

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

for x in [1..5] when x > 2
  alert x

Возможно, вам будет полезно добавить такие мелочи в компилятор CoffeeScript по адресу http://jashkenas.github.com/coffee-script/, чтобы увидетьесли они компилируют то, что вы ожидаете.

1 голос
/ 18 декабря 2011

Я не понимаю внутренних деталей синтаксиса CoffeeScript, поэтому я не могу сказать, что происходит в деталях. Однако ошибка немного ясна: вы не можете поместить новую строку между for и его переменной итератора. Кроме того, вы еще не получили эту ошибку , но вы не можете поместить новую строку между итерированным объектом и предложением when. Однако, если вы действительно хотите это сделать, это легко: поставьте обратную косую черту в конце первой и второй строк.

console.log x for \
    x in [1,2,3,4,5] \
    when x > 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...