trường hợp nhanh chóng rơi qua


146

Liệu swift có rơi qua tuyên bố? ví dụ nếu tôi làm như sau

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ột mã được thực thi cho trường hợp "một" và trường hợp "hai" không?

Câu trả lời:


367

Đúng. Bạn có thể làm 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 fallthroughtừ khóa:

var testVal = "hello"
var result = 0

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

29
+1 không chỉ đề cập fallthroughmà còn đề xuất 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ơ rơi vào C, và việc không rơi vào ví dụ, C #
Alexander - Tái lập Monica

Có ai biết làm thế nào để vượt qua từ một trường hợp để mặc định? trường hợp "hai", mặc định: sẽ không biên dịch.
Zack Morris

2
Đừng bận tâm. Tôi nhận ra rằng việc bình luận trường hợp làm cho nó trở thành một phần của các trường hợp mặc định được đặt, vì vậy: / * trường hợp "hai", * / default: có tác dụng tôi đang tìm kiếm.
Zack Morris

1
@AlexanderMomchliov C # có thông tin rõ ràng
Ian Newson

8
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")
}

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

5
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 ...
Andreas Utzinger

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

Không có tuyên bố phá vỡ, nhưng trường hợp linh hoạt hơn rất nhiều.

Phụ lục: Như Tệp tương tự chỉ ra, thực sự có các breakcâ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 switchcâu lệnh, 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.


6

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ường hợp trước đó có fallthroughkhớp hay không.


2

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.