19

休憩なしでコーヒースクリプトでスイッチを使用することは可能ですか?

switch code                      switch (code) {
    when 37 then                     case 37: break;
    when 38 then           ->        case 38: break;
    when 39 then                     case 39: break;
    when 40                          case 40:
        ...                              ...

私はこれがうまくいくと思ったが失敗した:

switch code
    when 37 then continue
    when 38 then continue  ->    not valid
    when 39 then continue
    when 40
        ...
4

4 に答える 4

48

あまり。ドキュメントから:

JavaScript の switch ステートメントは少し厄介です。誤ってデフォルトのケースに陥らないように、すべてのケース ステートメントの最後でブレークすることを忘れないでください。CoffeeScript は偶発的なフォールスルーを防ぎ、スイッチを戻り可能で代入可能な式に変換できます。形式は次のとおりです。switch 条件、when 句、それ以外の場合はデフォルトのケース。

caseただし、同等に扱われる場合は、 a に複数の値を指定することができます。

switch day
  when "Mon" then go work
  when "Tue" then go relax
  when "Thu" then go iceFishing
  when "Fri", "Sat"
    if day is bingoDay
      go bingo
      go dancing
  when "Sun" then go church
  else go work
于 2012-05-08T16:17:30.997 に答える
12

これを支援するために行継続を使用できます。例えば:

name = 'Jill'

switch name
  when 'Jill', \
       'Joan', \
       'Jess', \
       'Jean'
    $('#display').text 'Hi!'
  else
    $('#display').text 'Bye!'

ここで動作を確認してください。

于 2013-10-26T18:54:27.173 に答える
4

それは完全に可能です。古典的なJavaScriptを使用して、バックティックで渡すだけです

`
switch (code) {
    case 37:
    case 38:
    case 39:
    case 40:
        // do the work of all four
    default:
        //default
}
`
于 2013-03-26T06:17:34.633 に答える
2

すでに古い質問ですが、コンマを次の行に配置すると、@Ron Martinez が示すバックスラッシュ行の継続なしで、期待どおりに機能します

switch code
  when 37
     , 38
     , 39
     , 40
    console.log "Some Number"
  else
    console.log "Default"

これは次のようにコンパイルされます:

switch (code) {
  case 37:
  case 38:
  case 39:
  case 40:
    return console.log("Some Number");
  default:
    return console.log("Default");
}
于 2016-03-02T09:33:51.323 に答える