coffeescript中的两个对象参数

时间:2012-02-12 16:17:17

标签: coffeescript

我想转换

console.log({
  a: 'a'
}, {
  b: 'b'
});

到CoffeeScript中。我发现的唯一方法是

console.log
  a: 'a',
    b: 'b'

a: 'a'b: 'b'在这种情况下基本上是对称的时候,{{1}}和{{1}}并没有缩进,这似乎很奇怪。

4 个答案:

答案 0 :(得分:30)

将逗号放在一个单独的行中,一个缩进级别小于的散列/对象,因此它被视为函数调用的一部分。

console.log
   a: 'a'
, # indentation level matters!
   b: 'b'

这不起作用,因为缩进级别与散列相同,因此它被视为散列的一部分。

console.log
   a: 'a'
   ,
   b: 'b'

答案 1 :(得分:12)

或者您可以使用在CS中起作用的大括号:

console.log {a:'a'}, {b:'b'}

答案 2 :(得分:1)

好吧,如果你考虑一下解析规则,

a: 'a',
b: 'b'

实际上意味着

{ a: 'a', b: 'b' }

由于这不是您想要的行为,您需要告诉解析器b:行是另一个对象。缩进将为您做到这一点。现在这不是一个真正的问题,但我希望它能帮助你理解为什么要按照你描述的方式去做。这是正确的方式。

答案 3 :(得分:1)

$ coffee -bce 'console.log(a: "a"; b: "b")'
// Generated by CoffeeScript 1.2.1-pre

console.log({
  a: "a"
}, {
  b: "b"
});