2016-09-03 8 views
-3

switch文を使用して20以上のケースを処理しています。それが下記のように長い例えばswitch文を最小限にする方法:switch文を最小限に抑える方法は?

switch (something) { 

    case 1: 
     doX(); 
    break; 

    case 2: 
     doY(); 
    break; 

    case 3: 
     doN(); 
    break; 

    // And so on... 

} 

編集:すべてのよう

は、私は、これはjavascriptの質問であることを明確にする必要があり求めています。

+2

のようなだけでなく、通常のオブジェクトによって実現することができます。あなたが与えた疑似コードだけに基づいて、いいえ。あなたが[mcve]を投稿したら、多分。 –

+3

これを実行する方法はたくさんあります。より多くの文脈(すなわち、より多くのコード)がなければ、適切な回答を提供することは難しいでしょう。 – fge

+0

@EdCottrellの指導に感謝します。私の実際のswitch文は非常に長いため、実際には疑似コードを使用しました。私はそれが複雑な質問をするだろうと思った –

答えて

0

擬似コードのみを提供しています。あなたの実際のコードを提供して、私があなたをより良く導いたかもしれないはずです。とにかく、長いswith文には、次の短い形式を使用することができます。

var cases = { 
    1: doX, 
    2: doY, 
    3: doN 
    //......................cases from 4 to 19 
    20: doZ 
}; 
if (cases[something]) { 
    cases[something](); 
} 

希望します。

+1

ありがとう正確に私が探していたもの。 –

+1

@ toweddeji-2389これはJavaScriptではないようですが、どの言語を答えとして期待していますか? –

0

タスクが同じ場合があります。 12、 - あなたはケースのためのような多くの場合のために行われることになる共通のタスクを持っている場合は、さらに

switch (something) { 

    case 1: 
    case 10: 
     doX(); 
    break; 

    //... 

} 

:たとえば:doX()が発生し、両方のケースのための1とケース10と同じ方法であれば、あなたはこれを行うことができます13,14,15,16,doA()が実行されます。 defaultの場合にしてください。それは多くの場合を書くのを軽減します。

switch (something) { 

    // for case 12, 13, 14, 15, 16 
    default: 
     doA(); 
    break; 

} 
+0

ありがとうございました。実際には、すべてのケースは異なっています。 –

0

ES6マップ機能を使用して関数のマップを作成し、動的キー値で呼び出す必要があります。

var myMap = new Map(), 
 
     doX = n => console.log(n), 
 
     doY = n => console.log(n*2), 
 
     doN = n => console.log(n/2), 
 
something = 2; 
 
     
 
myMap.set(1,doX) 
 
    .set(2,doY) 
 
    .set(3,doN); 
 
myMap.get(something)(4);

同じ

は、あなたが実際にやっていることに完全に依存する

var myMap = {}, 
 
     doX = n => console.log(n), 
 
     doY = n => console.log(n*2), 
 
     doN = n => console.log(n/2), 
 
something = 3; 
 
     
 
myMap[1] = doX; 
 
myMap[2] = doY; 
 
myMap[3] = doN; 
 
myMap[something](4);

+0

素晴らしいチップのおかげで。 –

+0

これはjavascriptでもありますが、質問にはJavaでタグ付けされています –

+0

@Nicolas Filottoうわー..この質問はJavaScriptクエリの結果であったと私は誓っています。とにかにそれを削除する必要があります。 – Redu

関連する問題