【问题标题】:CoffeeScript : unexpected INDENT errorCoffeeScript:意外的 INDENT 错误
【发布时间】:2011-12-19 01:02:58
【问题描述】:

我正在我的 Rails 3.1 应用程序中试用 CoffeeScript。但是,我无法 弄清楚如何在 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

【问题讨论】:

    标签: coffeescript


    【解决方案1】:

    如果你的理解太长,你可以用\ 打破它,正如@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
    

    换句话说,推导式是简写的语法糖,简洁的 sn-ps - 您不必对所有事情都使用它们。

    【讨论】:

    • 没错。 CoffeeScript 的 for/while/untilif/unless 一样,可以使用后缀或前缀。如果有前缀,则需要使用缩进或then
    【解决方案2】:

    您试图将理解分散到多行,这是不允许的。它要么需要在一条线上,要么是一个适当的循环。您的单行版本按预期工作,所以我将显示循环版本:

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

    您可能会发现将这样的小东西扔进 http://jashkenas.github.com/coffee-script/ 的 CoffeeScript 编译器中会很有帮助,看看它们是否按照您的预期进行编译。

    【讨论】:

      【解决方案3】:

      我不了解 CoffeeScript 语法的内部细节,所以我无法详细说明出了什么问题。但是,错误有点清楚:您不能在 for 和它的迭代器变量之间添加换行符。此外,您没有收到此错误,但您不能在迭代对象和when 子句之间放置换行符。但是,如果您真的想这样做,很容易:在第一行和第二行的末尾加上反斜杠。

      console.log x for \
          x in [1,2,3,4,5] \
          when x > 2
      

      【讨论】:

        猜你喜欢
        • 2023-03-23
        • 2013-12-29
        • 2013-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-15
        • 2011-07-04
        • 1970-01-01
        相关资源
        最近更新 更多