2011-09-12 5 views
0
switch @user && @other 
    when 'user' && true 
     ... 
    when 'user2' && false 
     ... 

これは可能でしょうか?それは何らかの理由で機能しません。ありがとう!CoffeeScriptのマルチバリュースイッチステートメント?

+1

"動作しない"と定義できますか?そのコードはうまくコンパイルされます。あるいは、 'user'と' 'user''と' @ other'を 'true'と比較することを期待していましたか?そうであれば、あなたが望むことをするために 'switch 'を得る方法はありません。 'if' /' else'を使うか、関数を書くべきです。 –

+0

ああ。はい、私はユーザーを 'ユーザー'に、他を真にするようにしていました。 – fancy

答えて

1

JSが[1, 2] === [1, 2]と考えていないことは残念です(別の参照情報なので)。そうでなければ、配列を使って必要なことをすることができます。

multiSwitch = (values, cases...) -> 
    for c in cases 
    match = true 
    for i in [0...values.length] 
     unless c[i] is values[i] 
     match = false 
     break 
    return c[values.length]() if match 
    return 

はこのようにそれを使用します:

代わりに、ここでは、関数の

multiSwitch [@user, @other], 
    ['user', true, -> 
    console.log 'case 1' 
    ] 
    ['user2', false, -> 
    console.log 'case 2' 
    ] 

あなたがやっていることによって、たとえば、にあなたの複数の値を連結する方が簡単な場合があり文字列を入力してswitchを実行します。

+0

ありがとうTrevor !! – fancy