Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coffeescript中的文本数组_Coffeescript - Fatal编程技术网

Coffeescript中的文本数组

Coffeescript中的文本数组,coffeescript,Coffeescript,在JS中创建文字数组时: [{ name: 'david', value: 'blue' }, { name: 'harold', value: 'orange' }] 我能看到的用Coffeescript写这篇文章的唯一方法是: [ name: 'david' value: 'blue' , name: 'harold' value: 'orange' ] 对我来说这很难看,那个“浮动”的逗号不太合适。有没有其他的语法?我知道您可以在Coffeescript中继续使用JS风

在JS中创建文字数组时:

[{ name: 'david', value: 'blue' }, { name: 'harold', value: 'orange' }]
我能看到的用Coffeescript写这篇文章的唯一方法是:

[
  name: 'david'
  value: 'blue'
,
  name: 'harold'
  value: 'orange'
]

对我来说这很难看,那个“浮动”的逗号不太合适。有没有其他的语法?我知道您可以在Coffeescript中继续使用JS风格的方法,但我希望能有更简洁的方法。

这是每个Coffeescript开发人员都会遇到的一件事

恐怕这是我们目前仅有的了。我能想到的唯一其他选择是:

[
  { name: 'david', value: 'blue' }
  { name: 'harold', value: 'orange' }
]

…但它本身远不是理想的


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

我不记得为什么会这样,甚至不记得它是否对您有用,但它是您正在编写的代码的另一种替代方案

[
  {}= name: 'david', value: 'blue'
  {}= name: 'harold', value: 'orange'
]

这似乎也奇怪地起了作用。我肯定有一个简单的原因,但我不确定

[
  {}= 
    name: 'david'
    value: 'blue'
  {}= 
    name: 'harold'
    value: 'orange'
  {}= 
    name: 'david'
    value: 'blue'
]

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

[
  {
    name: 'david'
    value: 'blue'
  }, {
    name: 'harold'
    value: 'orange'
  }, {
    name: 'david'
    value: 'blue'
  }
]
或者,如果你真的讨厌逗号:

[
  {
    name: 'david'
    value: 'blue'
  }
  {
    name: 'harold'
    value: 'orange'
  }
  {
    name: 'david'
    value: 'blue'
  }
]
虽然我个人认为,缩进一级的浮动逗号看起来并不那么糟糕:

[
    name: 'david'
    value: 'blue'
  , 
    name: 'harold'
    value: 'orange'
  , 
    name: 'david'
    value: 'blue'
]

我认为,当对象文字开始和结束时,这一点非常明显,而且几乎不可能忘记对象文字之间的逗号=D

@Yuki Izumi问应该如何实现这一点(我没有直接评论他的回答的因果报应)

我孩子气地试图在coffeescript中做的事情是这样的:

arrayOfLiterals =
  'somekey': 'someval'
  'otherkey': 'otherval'
     'keyInOtherArrayElement': 'andItsVal'
     'yetMoreInSecondElement': 'andItsVal'
  'thirdElement': 'val'
     'fourthElement': 'val'

这是我的两分钱

我唯一想到的就是:[name:'david',value:'blue'name:'harold',value:'orange']很抱歉格式不好,这就是我的意思:这样可以多保存四个字符,换行符用作元素之间的分隔符。不过,我怀疑咖啡脚本中还有其他东西阻止了这一点:)@colinramsay:是的,这对我来说也不错;我只是不愿意,因为它已经作为一个选项进行解析,因此它会破坏向后兼容性,不太可能被接受。@Colinram说,该语法的问题是,它会有歧义,因为它与对象文字语法冲突(:一个对象文字包含多行,每行包含多个属性),而且对象不能有重复的键。作为一种新的语法添加,我更喜欢使用星号来表示数组中的对象文字:)@Len这种语法的问题不仅在于它产生了意外的结果,而且它还非常脆弱()。。。(在我看来也很难看)。在每个逗号后面添加一个换行符修复了()。这真的很奇怪。我喜欢=D
{}=
是一个空的析构函数赋值,它不析构函数,只计算正确的操作数<代码>[]=的工作原理也一样。