2

私は、異なるケースで同じコードフラグメントに対応する可能性のあるスイッチケースを持っています。

すべてのコードを複製するのではなく、エレガントな代替手段はありますか?

switch(expression) {

  case firstCase:
      // do something
      break;

  case secondCase:
      // do exactly the same of first case
      break;

  case otherCase:
      // do anything else
      break;

  case etceteraCase:
      .......


  default:
      break;

}

別の方法として、ケース内で呼び出されるメソッドを作成できることはわかっていますが、これにより、保守が困難なメソッドが急増する可能性があります。

4

3 に答える 3

7

はい:

switch(expression) {

  case firstCase:
  case secondCase:
      // do exactly the same of first case
      break;

  case otherCase:
  case yetAnotherCase:
      // do anything else
      break;

  case etceteraCase:
      .......


  default:
      break;

}
于 2013-03-08T09:16:07.310 に答える
2

最初のケースの後にブレークを削除します。

switch(expression) {

  case firstCase:

  case secondCase:
      // do the same of first case
      break;

  case otherCase:
      // do anything else
      break;

  case etceteraCase:
      .......


  default:
      break;

}
于 2013-03-08T09:16:29.487 に答える
2
switch(expression) {

  case firstCase:
  case secondCase:
      // do exactly the same of first case
      break;

  case otherCase:
      // do anything else
      break;

  case etceteraCase:
      .......


  default:
      break;

}

除外break;すると、期待どおりの結果が得られます。

于 2013-03-08T09:16:41.170 に答える