2012-02-12 11 views
9

voglio convertireDue argomenti oggetto in CoffeeScript

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

in CoffeeScript. L'unico modo che ho trovato è

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

Sembra bizzarro che a: 'a' e b: 'b' non sono rientrate lo stesso quando sono sostanzialmente simmetrica in questa situazione.

+0

Solo perché è possibile lasciare bretelle/parentesi in coffeescript, non significa che si dovrebbe. Questo è probabilmente uno dei casi "non dovrebbe". –

risposta

11

Oppure si potrebbe usare le parentesi graffe, che fanno il lavoro in CS:

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

A destra, le parentesi graffe e le parentesi sono (di solito) facoltative, ma non c'è motivo di contorsioni per evitarle. –

1

Beh, se si pensa alle regole di analisi,

a: 'a', 
b: 'b' 

significa in realtà

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

Poiché questo non è il comportamento desiderato, è necessario informare il parser che la linea con b: è un altro oggetto. L'indentazione lo farà per te. Ora questa non era una domanda, ma spero che ti aiuti a capire perché farlo nel modo che hai descritto. È la strada giusta.

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

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

Mi dispiace, qual è il tuo punto qui – Randomblue

+0

Basta mostrare un altro modo per rappresentare il tuo JS. – matyr

28

Mettere l'una virgola in una linea separata, livello di una rientranza inferiore l'hash/oggetto, quindi è trattata come parte dell'invocazione della funzione.

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

questo non funziona perché il livello di rientro è lo stesso hash, quindi è trattata come parte del hash.

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