Coffeescript中的文字数组

Col*_*say 13 coffeescript

在JS中创建文字数组时:

[{ name: 'david', value: 'blue' }, { name: 'harold', value: 'orange' }]
Run Code Online (Sandbox Code Playgroud)

我在Coffeescript中看到写这篇文章的唯一方法是:

[
  name: 'david'
  value: 'blue'
,
  name: 'harold'
  value: 'orange'
]
Run Code Online (Sandbox Code Playgroud)

对我来说这很丑陋,"漂浮"的逗号并不是很好.有没有替代语法?我知道你可以继续在Coffeescript中使用JS风格的方法,但我希望有更简洁的东西.

San*_*dro 14

我不记得为什么会这样,或者即使它对你有用,但它是你正在编写的代码的另一种选择.

[
  {}= name: 'david', value: 'blue'
  {}= name: 'harold', value: 'orange'
]
Run Code Online (Sandbox Code Playgroud)

是的,这似乎有效.

这也奇怪似乎有效.我确信这有一个简单的原因,但我不确定.

[
  {}= 
    name: 'david'
    value: 'blue'
  {}= 
    name: 'harold'
    value: 'orange'
  {}= 
    name: 'david'
    value: 'blue'
]
Run Code Online (Sandbox Code Playgroud)

查看已编译的代码.

  • `{} =`是一个空的解构赋值,它不会破坏任何东西,只是简单地求值为右操作数.`[] =`的作用也一样. (4认同)

Ash*_*she 11

这是每个CoffeeScript开发人员似乎遇到的一件事.

我担心这就是我们现在所拥有的一切.我能想到的唯一另一种选择是:

[
  { name: 'david', value: 'blue' }
  { name: 'harold', value: 'orange' }
]
Run Code Online (Sandbox Code Playgroud)

......但它远非理想本身.

如果有人想建议一个替代的,简洁的CS-y语法,我很乐意尝试在解析器中实现它并为它做一个pull请求.我希望比这更好.


epi*_*ian 8

要删除对象文字中的逗号,您可以选择:

[
  {
    name: 'david'
    value: 'blue'
  }, {
    name: 'harold'
    value: 'orange'
  }, {
    name: 'david'
    value: 'blue'
  }
]
Run Code Online (Sandbox Code Playgroud)

或者,如果你真的讨厌逗号:

[
  {
    name: 'david'
    value: 'blue'
  }
  {
    name: 'harold'
    value: 'orange'
  }
  {
    name: 'david'
    value: 'blue'
  }
]
Run Code Online (Sandbox Code Playgroud)

虽然我个人觉得浮动逗号,缩进一级,看起来不那么糟糕:

[
    name: 'david'
    value: 'blue'
  , 
    name: 'harold'
    value: 'orange'
  , 
    name: 'david'
    value: 'blue'
]
Run Code Online (Sandbox Code Playgroud)

我认为当对象文字开始和结束时它很明显,它也几乎不可能忘记对象文字之间的逗号= D