2011-02-05 17 views
42

questo funziona:Come restituire oggetto esplicitamente CoffeeScript

myfunc =() -> 
    id: 3 
    name: 'myname' 

Ma io voglio essere espliciti sulla restituzione dell'oggetto.

myfunc =() -> 
    return 
     id: 3 
     name: 'myname' 

Ma ottengo l'errore "Inatteso 'INDENT" ". Cosa c'è di sbagliato con il codice sopra?

+1

Vedere https://github.com/jashkenas/coffee-script/issues/1263. –

+2

è meglio non restituirlo esplicitamente, poiché il coffeescript restituisce sempre implicitamente qualcosa. farlo esplicitamente non è solo ridondante, ma potrebbe indurre il lettore a credere che faccia la differenza e che funzioni senza un valore di ritorno esplicito restituisca "indefinito" come in JS. –

+0

@flyingsheep "non solo ridondante, ma potrebbe indurre il lettore a credere che faccia la differenza" Questo è un punto critico ed è applicabile a così tanti diversi. –

risposta

84
myFunc = -> 
    return { 
    id : 3 
    name : 'myname' 
    } 

myFunc = -> 
    return {} = 
    id : 3 
    name : 'myname' 

myFunc = -> 
    # return 
    id : 3 
    name : 'myname' 
+14

I esp. come l'ultimo ;-) – Juve

+0

3 ° è molto buono – alsotang

+0

sì 3 ° è fantastico/esilarante – xst

10

si dovrebbe mettere il valore di ritorno sulla stessa linea o avvolgerla in ():

myFunc =() -> 
    return id:3, name:'myname' 

myFunc =() -> 
    return (
    id: 3 
    name: 'myname' 
) 
1

Le risposte precedenti sono tutti corretti. Questo funziona anche:

myFunc =() -> 
    { 
     id: 3 
     name: 'myname' 
    } 
2

Penso che il modo migliore è

myFunc = -> 
    return (
    id: 3 
    name: 'myname' 
) 

perché si adatta alla filosofia della programmazione funzionale.

Problemi correlati