2012-06-30 28 views

回答

3

一個有用的情況是,當幾個值應該有相同的結果:

switch (value) { 
    case 1: 
    case 2: 
    action1(); 
    break; 
    case 3: 
    case 4: 
    case 5: 
    action2(); 
    break; 
} 

空的情況下降到下一個。在這種情況下,混淆的風險很小。

,這本書的作者是擔心的情況是,當你把行動,例如當值2應該有兩個action2action3

switch (value) { 
    case 1: 
    action1(); 
    break; 
    case 2: 
    action2(); 
    // continue with action3 
    case 3: 
    action3(); 
    break; 
} 

忘記一個break是這樣一個共同的錯誤,就是你應該添加類似上面的評論以明確說明它被故意排除在外。

爲了比較,在C#中,您不允許在switch中忽略break,您必須使用goto來指定執行應繼續的情況。

switch(val) { 
    case "aa": 
    case "bb": 
     // do you thing here 
     break; 
} 
1

我沒有做到這一點的唯一的一次是當用戶輸入首選大寫形式,但在較低的情況下,可以接受的:

switch(input){ 
    case 'a': 
     print "Please use uppercase next time"; 
    case 'A': 
     //do stuff here 
     break; 
} 
+1

真實,雖然JavaScript的'print'方法用於打印頁面,而不是輸出字符串。 – Utkanos

0

當你有多個案例,都應該得到相同的代碼這當然是可以接受的。請記住,如果前一個沒有break語句,則將執行下一個case塊。這很有用,但也會造成混淆(即缺少break語句會導致錯誤)。 使用它是主觀的,但基本上當你的狀態就像是一個or表達式,你可以使用它:

if(myvar == x || myvar == y) { 
    // do A 
} else if (myvar == w || myvar == z) { 
    // do B 
} else { 
    // do C 
} 

可以改寫爲:

switch(myvar) { 
    case x: 
    case y: 
     // do A 
     break; 
    case w: 
    case z: 
     // do B 
     break; 
    default: 
     // do C 
     break; 
} 

}

0

我覺得這本書應該有堅持事實,而不是發出這樣的建議:

相關問題