2011-02-05 4 views
42

で明示的にオブジェクトを返すために、どのようにこの作品。のCoffeeScript

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

しかし、私は "Unexpected 'INDENT'"エラーが発生します。上記のコードで何が問題になっていますか?

+1

https://github.com/jashkenas/coffee-script/issues/1263を参照してください。 –

+2

あなたは明示的にそれを返さないほうが良いです。coffeescriptは常に暗黙のうちに結果を返します。明示的に行うことは冗長であるだけでなく、読者が違いを生むと信じて、明示的な戻り値なしに関数がJSのように 'undefined'を返すと信じるように仕向けるかもしれません。 –

+0

@flyingsheepは "冗長であるだけでなく、読者を変えて信じるように仕向けるかもしれない"それはそのような重大なポイントであり、非常に多くの異なるものに適用されます。 –

答えて

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

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

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

I esp。最後の1のように;-) – Juve

+0

3番目は非常に良い – alsotang

+0

ええ3番目はすごい/陽気です – xst

10

あなたは同じ行に戻り値を置くか()でそれをラップする必要があります。

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

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

以前の回答がすべて正しいです。これは、あまりにも動作します。私はそれが関数型プログラミングの哲学に合うための最良の方法は

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

ある

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