2011-02-05 2 views
42

Это работает:Как вернуть объект в явном CoffeeScript

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

Но я хочу быть явным о возвращении объекта.

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

Но я получаю сообщение об ошибке «Неожиданная ошибка INDENT». Что не так с вышеуказанным кодом?

+1

См. Https://github.com/jashkenas/coffee-script/issues/1263. –

+2

вам лучше не явным образом возвращать его, так как coffeescript всегда выводит материал. явно делая это не только избыточно, но может обмануть читателя, полагая, что он имеет значение, а функции без явного возвращаемого значения возвращают 'undefined', как в JS. –

+0

@flyingsheep «не только избыточен, но и может обмануть читателя, если он считает, что он имеет значение». Это такая критическая точка и применима к множеству разных. –

ответ

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

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

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

I esp. как последний ;-) – Juve

+0

3-я очень хорошая – alsotang

+0

да 3-я ужасная/веселая – xst

10

вы должны поместить возвращаемое значение в той же строке или обернуть его в ():

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

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

Предыдущие ответы верны. Это тоже работает:

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

Я думаю, что лучший способ

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

, потому что она соответствует философии функционального программирования.