Switch語句:我知道他們在做什麼 - 根據慣例,我常常使用它們很多次,當我想根據Enum的值做不同的事情時,但現在它只是打我:爲什麼我們要使用它?它最初的目的是什麼?我的意思是,這樣的:switch語句是什麼?
switch(myVar) {
case Foo:
doSomething();
break;
case Bar:
doSomethingElse();
break;
default:
justAnotherThing();
break;
}
具有完全相同的行爲:
if(myVar == Foo) {
doSomething()
}else if(myVar == Bar) {
doSomethingElse();
}else {
justAnotherThing();
}
加if
的讓你做不平等的比較(>
,<
,!=
),如果你需要它。我可能會發現一個開關更有用的唯一情況是當你不使用內部的break
聲明時:但這種情況不會太頻繁,我發現代碼質量很糟糕。
我真的找不到使用switch
而非if
的任何好處......那麼爲什麼要定義它?
現在做相同的'if-else if'鏈有十個選擇,或二十,你會發現它不是很可讀。另外,編譯器可能能夠將'switch'優化成簡單的跳轉表,而不必評估每個條件直到找到「匹配」。並且請記住,如果沒有「break」,那麼在類C語言中(您似乎將其用作基礎)的情況*會通過*到達下一個「case」。這在if-else if鏈中很難做到。 –
至於閱讀能力,我認爲他們幾乎是平等的 - 只要你保持一致的身份,並且你使用'switch'的情況下使用if-else if',否則if (myVar =='總是佔用相同的空間將使所有可能的值對齊並且易於閱讀 – olivarra1
而在我的問題中,我通過刪除'break'來提及fall-through行爲,但這對可讀性來說很糟糕:所以你有可能會或可能不會跳到下一個案件的案件,以及改變案件的順序都會影響行爲,我只是用這個「把戲」來比較或者比較一個開關,並試圖避免出現其他情況。 – olivarra1