coffeescript での条件分岐です。
switch
switch
は次のように書きます。
1 2 3 4 5 6 7 8 9 |
switch v when 1 then abc when 2 method 1 method 2 when 3, 4 method 3 else method 4 |
javascript の switch
では括弧が必要ですが、 coffeescript では必要ありません。
C や javascript では、 それぞれの場合を case
で分けていましたが、 coffeescript では Ruby と同じように when
で分けます。 when
の後続の処理は、 1行で書く場合は then
の後に書きます。 改行して書く場合は then
を書きません、 書くとエラーになります。
when
の後には値を複数書くことができます。
javascript の switch
では、 when
の後に break
を書いて、後の処理を行わないように制御していましたが、 coffeescript では break
を書く必要がありません。 別の言い方をすれば、フォールスルーができないということになります。
when
で記述したどの条件・値にも当てはまらなかった場合は else
のところの処理が行われます。 else
の後の処理は、 1行で書く場合でも then
を書きません。
また、 when
の中には条件文を書くこともできます。 また、 switch
自身が値を返すので、 変数にswitch
の結果を代入するような書き方もできます。
1 2 3 4 |
r = switch when v < 1 then 'A' when v < 2 then 'B' else 'C' |
注意
次のような書き方には注意しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
c = 1 v = switch when c > 0 then 'A' else 'B' # => v = 'A' v = switch true when c > 0 then 'A' else 'B' # => v = 'A' v = switch false when c > 0 then 'A' else 'B' # => v = 'B' v = switch 1 when c > 0 then 'A' else 'B' # => v = 'B' |
when
の後に true
/false
で評価する条件文を書くときは、 switch
の後に式をかかないようにしましょう。 (さらに詳しいことは、javascript にどのように変換されるのかを追うとわかります。)