Ai đã quyết định (và dựa trên những khái niệm nào) mà việc switchxây dựng (bằng nhiều ngôn ngữ) phải sử dụng breaktrong mỗi tuyên bố?
Tại sao chúng ta phải viết một cái gì đó như thế này:
switch(a)
{
case 1:
result = 'one';
break;
case 2:
result = 'two';
break;
default:
result = 'not determined';
break;
}
(nhận thấy điều này trong PHP và JS; có thể có nhiều ngôn ngữ khác sử dụng ngôn ngữ này)
Nếu switchlà một thay thế if, tại sao chúng ta không thể sử dụng cùng một cấu trúc như cho if? I E:
switch(a)
{
case 1:
{
result = 'one';
}
case 2:
{
result = 'two';
}
default:
{
result = 'not determined';
}
}
Người ta nói rằng breakngăn chặn việc thực hiện khối theo sau hiện tại. Nhưng, có ai đó thực sự gặp phải tình huống này, nơi có nhu cầu thực hiện khối hiện tại và theo sau không? Tôi đã không. Đối với tôi, breakluôn luôn có. Trong mỗi khối. Trong mỗi mã.
case 'a': case 'A': case 'b': case 'B'nhưng chủ yếu là vì tôi không thể làm được case in [ 'a', 'A', 'b', 'B' ]. Một câu hỏi tốt hơn một chút là, trong ngôn ngữ ưa thích hiện tại của tôi (C #), việc nghỉ là bắt buộc và không có sự sụp đổ ngầm; quên breaklà lỗi cú pháp ...: \
case TOKEN_A: /*set flag*/; case TOKEN_B: /*consume token*/; break; case TOKEN_C: /*...*/
breakcó mặt ở bất cứ đâu” là một quy tắc đơn giản hơn đáng kể để thực hiện hơn “Đừng phát ra một bước nhảy nếu fallthroughcó mặt trong một switch”.
CASEcâu lệnh tương đương với một khối if / otherif khổng lồ.