2014-06-04 16 views
107

Có nhanh chóng đã rơi qua tuyên bố? ví dụ: nếu tôi làm như sautrường hợp nhanh chóng rơi qua

var testVar = "hello" 
var result = 0 

switch(testVal) 
{ 
case "one": 
    result = 1 
case "two": 
    result = 1 
default: 
    result = 3 
} 

có thể có cùng mã được thực hiện cho trường hợp "một" và trường hợp "hai" không?

Trả lời

273

Có. Bạn có thể làm như vậy như sau:

var testVal = "hello" 
var result = 0 

switch testVal { 
case "one", "two": 
    result = 1 
default: 
    result = 3 
} 

Ngoài ra, bạn có thể sử dụng từ khóa fallthrough:

var testVal = "hello" 
var result = 0 

switch testVal { 
case "one": 
    fallthrough 
case "two": 
    result = 1 
default: 
    result = 3 
} 
+35

+1 để đề cập đến 'fallthrough' – nhgrif

+15

+1 không chỉ đề cập đến' fallthrough', nhưng gợi ý sử dụng nhiều trường hợp – Thilo

+3

Đây là một sự thỏa hiệp tốt giữa nguy cơ bị C rơi và thiếu thông tin trong ví dụ: C# – Alexander

6
case "one", "two": 
    result = 1 

Không có báo cáo đột phá, nhưng trường hợp rất nhiều linh hoạt hơn.

Hợp đồng bổ sung: Như tệp tương tự chỉ ra, có thực tế là break câu lệnh trong Swift. Chúng vẫn có sẵn để sử dụng trong các vòng lặp, mặc dù không cần thiết trong các câu lệnh switch, trừ khi bạn cần điền vào một trường hợp trống khác, vì các trường hợp trống không được phép. Ví dụ: default: break.

1

Từ khóa fallthrough ở cuối trường hợp gây ra hành vi thu gọn mà bạn đang tìm kiếm và nhiều giá trị có thể được kiểm tra trong một trường hợp duy nhất.

4
var testVar = "hello" 

switch(testVar) { 

case "hello": 

    println("hello match number 1") 

    fallthrough 

case "two": 

    println("two in not hello however the above fallthrough automatically always picks the  case following whether there is a match or not! To me this is wrong") 

default: 

    println("Default") 
} 
+0

Bạn có biết cách nào rơi vào trường hợp mặc định không? – MarcJames

+1

tôi đồng ý với "trường hợp hai". Đối với tôi hành vi này hút. Tại sao Swift thực hiện trường hợp tiếp theo ngay cả khi nó không đúng? Điều này làm cho tuyên bố chuyển đổi hoàn toàn vô dụng ... –

0

Dưới đây là ví dụ cho bạn dễ hiểu:

let value = 0 

switch value 
{ 
case 0: 
    print(0) // print 0 
    fallthrough 
case 1: 
    print(1) // print 1 
case 2: 
    print(2) // Doesn't print 
default: 
    print("default") 
} 

Kết luận: Sử dụng fallthrough để thực hiện trường hợp tiếp theo (chỉ một) khi trước đó có fallthrough là trận đấu hay không.

Các vấn đề liên quan