Siapa yang memutuskan (dan berdasarkan konsep apa) yang harus digunakan switchkonstruksi (dalam banyak bahasa) breakdi setiap pernyataan?
Mengapa kita harus menulis sesuatu seperti ini:
switch(a)
{
case 1:
result = 'one';
break;
case 2:
result = 'two';
break;
default:
result = 'not determined';
break;
}
(perhatikan ini di PHP dan JS; mungkin ada banyak bahasa lain yang menggunakan ini)
Jika switchmerupakan alternatif if, mengapa kita tidak dapat menggunakan konstruksi yang sama seperti untuk if? Yaitu:
switch(a)
{
case 1:
{
result = 'one';
}
case 2:
{
result = 'two';
}
default:
{
result = 'not determined';
}
}
Dikatakan bahwa breakmencegah eksekusi blok mengikuti yang sekarang. Tapi, apakah seseorang benar-benar mengalami situasi, di mana ada kebutuhan untuk eksekusi blok saat ini dan yang berikutnya? Saya tidak melakukannya. Bagi saya, breakselalu ada. Di setiap blok. Di setiap kode.
case 'a': case 'A': case 'b': case 'B'tetapi sebagian besar karena saya tidak bisa melakukannya case in [ 'a', 'A', 'b', 'B' ]. Pertanyaan yang sedikit lebih baik adalah, dalam bahasa pilihan saya saat ini (C #), istirahat wajib , dan tidak ada fall-implisit; Lupa breakadalah kesalahan sintaksis ...: \
case TOKEN_A: /*set flag*/; case TOKEN_B: /*consume token*/; break; case TOKEN_C: /*...*/
breakada di mana saja” adalah aturan yang jauh lebih sederhana untuk diterapkan daripada “Jangan memancarkan lompatan jika fallthroughada dalam switch”.
CASEpernyataan yang setara dengan raksasa jika / elseif diblokir.