1

通常のSwitchステートメントに対してこのようなものを使用する必要があるのはいつですか?それぞれの長所と短所は何ですか?

function ABC(i, j, a) {
  var ops = {
    'add': function(i, j) { return i + j; },
    'minus': function(i, j) { return i - j; },
    'multiply': function(i, j) { return i * j; },
    'random': function(i, j) {
      return ops[['add', 'minus', 'multiply'][Math.floor(Math.random() * 3)]](i, j);
    }
  };
  return ops[a](i, j);
}
4

1 に答える 1

1

長所:はるかに柔軟性があります。関数はどこにでも定義でき、実行時にそれらを再割り当てしたり、プログラムで辞書を生成したりすることもできます。これは、除外できるパターンがある場合に大きなメリットです。後で辞書を再利用したり、渡したりすることもできます。

短所:コンパイルされた言語では、遅くなる可能性があります。(JITを使用すれば、それは実際には重要ではありません。)小さなコードスニペットの場合、スイッチバージョンの方が読みやすくなります。

個人的にはdictアプローチを好みますが、それでも主にPythonでコーディングします。

于 2012-08-30T04:54:04.753 に答える