ใครเป็นผู้ตัดสินใจ (และขึ้นอยู่กับแนวคิดใด) ที่การ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