2011-02-05 9 views
42

esto funciona:Cómo devolver objeto explícitamente en CoffeeScript

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

Pero quiero ser explícito acerca de regresar objeto.

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

Pero me sale el error "Unexpected 'INDENT'". ¿Qué pasa con el código anterior?

+1

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

+2

es mejor que no lo devuelva explícitamente, ya que coffeescript siempre devuelve implícitamente las cosas. hacerlo explícitamente no solo es redundante, sino que puede engañar al lector para que crea que hace una diferencia y las funciones sin un valor de retorno explícito regresarían 'indefinidas' como en JS. –

+0

@flyingsheep "no solo es redundante, sino que puede engañar al lector para que crea que hace una diferencia" Ese es un punto tan crítico y aplicable a tantos diferentes. –

Respuesta

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

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

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

I esp. como el último ;-) – Juve

+0

3º es muy bueno – alsotang

+0

sí, el tercero es increíble/hilarante – xst

10

usted debe poner el valor devuelto en la misma línea o envolverlo en ():

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

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

Las respuestas anteriores son los correctos. Esto funciona también:

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

creo que la mejor manera es

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

porque se ajusta a la filosofía de la programación funcional.

Cuestiones relacionadas