Два аргумента объекта в coffeescript - PullRequest
9 голосов
/ 12 февраля 2012

Я хочу конвертировать

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

в CoffeeScript. Единственный способ, который я нашел, это

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

Кажется странным, что a: 'a' и b: 'b' не имеют одинакового отступа, когда они по существу симметричны в этой ситуации.

Ответы [ 4 ]

30 голосов
/ 03 февраля 2013

Поместите запятую в отдельную строку, один уровень отступа меньше, чем хеш / объект, поэтому он рассматривается как часть вызова функции.

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

это не будет работать, потому что уровень отступа такой же, как и у хеша, поэтому он рассматривается как часть хеша.

console.log
   a: 'a'
   ,
   b: 'b'
12 голосов
/ 12 февраля 2012

Или вы можете использовать фигурные скобки, которые работают в CS:

console.log {a:'a'}, {b:'b'}
1 голос
/ 13 февраля 2012
$ coffee -bce 'console.log(a: "a"; b: "b")'
// Generated by CoffeeScript 1.2.1-pre

console.log({
  a: "a"
}, {
  b: "b"
});
1 голос
/ 12 февраля 2012

Ну, если вы думаете о правилах разбора,

a: 'a',
b: 'b'

на самом деле означает

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

Поскольку это не то поведение, которое вам нужно, вам нужно сообщить парсеру, что строка с b: - это еще один объект. Отступ будет делать это для вас. Теперь это не был действительно вопрос, но я надеюсь, что это поможет вам понять, почему делать это так, как вы описали. Это правильный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...