ใครเป็นผู้ตัดสินใจ (และขึ้นอยู่กับแนวคิดใด) ที่การswitchก่อสร้าง (ในหลายภาษา) ต้องใช้breakในแต่ละข้อความ
ทำไมเราต้องเขียนสิ่งนี้:
switch(a)
{
case 1:
result = 'one';
break;
case 2:
result = 'two';
break;
default:
result = 'not determined';
break;
}
(สังเกตสิ่งนี้ใน PHP และ JS อาจมีหลายภาษาที่ใช้สิ่งนี้)
ถ้าswitchเป็นทางเลือกifทำไมเราไม่สามารถใช้สิ่งก่อสร้างเดียวกันนี้เพื่อif? เช่น:
switch(a)
{
case 1:
{
result = 'one';
}
case 2:
{
result = 'two';
}
default:
{
result = 'not determined';
}
}
มันบอกว่าbreakป้องกันการดำเนินการของบล็อกต่อไปนี้ในปัจจุบัน แต่มีบางคนวิ่งเข้ามาในสถานการณ์จริงๆแล้วมีความจำเป็นในการดำเนินการของบล็อกปัจจุบันและบล็อกใดบ้าง ฉันไม่ได้ สำหรับฉันbreakอยู่ที่นั่นเสมอ ในทุกช่วงตึก ในทุกรหัส
case 'a': case 'A': case 'b': case 'B' case in [ 'a', 'A', 'b', 'B' ]คำถามที่ดีกว่าเล็กน้อยคือในภาษาที่ฉันต้องการในปัจจุบัน (C #) การหยุดพักเป็นสิ่งที่ จำเป็นและไม่มีการตกลงมาโดยปริยาย การลืมbreakเป็นข้อผิดพลาดทางไวยากรณ์ ... : \
case TOKEN_A: /*set flag*/; case TOKEN_B: /*consume token*/; break; case TOKEN_C: /*...*/
breakอยู่ที่ใดก็ได้” เป็นกฎที่ง่ายกว่าในการใช้มากกว่า“ อย่าปล่อยให้กระโดดถ้าfallthroughอยู่ในที่switch”
CASEคำสั่งที่เทียบเท่ากับบล็อกยักษ์ if / elseif