Siapa yang memutuskan (dan berdasarkan konsep apa) yang harus digunakan switch
konstruksi (dalam banyak bahasa) break
di 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 switch
merupakan 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 break
mencegah 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, break
selalu 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 break
adalah kesalahan sintaksis ...: \
case TOKEN_A: /*set flag*/; case TOKEN_B: /*consume token*/; break; case TOKEN_C: /*...*/
break
ada di mana saja” adalah aturan yang jauh lebih sederhana untuk diterapkan daripada “Jangan memancarkan lompatan jika fallthrough
ada dalam switch
”.
CASE
pernyataan yang setara dengan raksasa jika / elseif diblokir.