Trong bài viết này, bạn sẽ học cách sử dụng các câu lệnh điều khiển công tắc để điều khiển luồng thực thi chương trình của bạn.
Câu lệnh switch cũng là một loạt các câu lệnh điều khiển Swift egif-else, bảo vệ, v.v., thực hiện các hành động khác nhau dựa trên các điều kiện khác nhau.
Cái hay của câu lệnh switch là nó có thể so sánh một giá trị với một số mẫu phù hợp có thể có. Do đó, nó có thể được sử dụng để thay thế cho if… else… if
thang dài trong khi phù hợp với mô hình phức tạp.
Cú pháp của câu lệnh switch
Cú pháp của câu lệnh switch là:
switch biến / biểu thức (case value1: // câu lệnh case value2: // câu lệnh default: // câu lệnh)
Câu lệnh Switch trong Swift hoạt động như thế nào?
- Biểu thức chuyển đổi được đánh giá một lần.
- Nó nhận biểu thức và so sánh với từng giá trị trường hợp theo thứ tự (Trên cùng -> Dưới cùng).
- Nếu có một sự trùng khớp, câu lệnh bên trong case sẽ được thực thi và toàn bộ câu lệnh switch sẽ kết thúc quá trình thực thi của nó ngay sau khi trường hợp switch khớp đầu tiên được hoàn thành.
- Nếu không có sự phù hợp với trường hợp, nó rơi vào trường hợp tiếp theo.
- Từ khóa mặc định chỉ định mã để chạy nếu không có khớp chữ hoa chữ thường.
Lưu ý : Nội dung của mỗi trường hợp phải chứa ít nhất một câu lệnh thực thi.
Ví dụ 1: Chương trình đơn giản sử dụng Switch Statement
let dayOfWeek = 4 switch dayOfWeek ( case 1: print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") )
Khi bạn chạy chương trình trên, kết quả đầu ra sẽ là:
Thứ tư
Trong chương trình trên, câu lệnh switch bắt đầu bằng cách khớp giá trị dayOfWeek với trường hợp 1 . Vì giá trị dayOfWeek không khớp với giá trị trường hợp đầu tiên 1, nó sẽ rơi vào trường hợp tiếp theo cho đến khi một giá trị khớp.
Vì trường hợp 4 khớp với biểu thức switch, câu lệnh print("Wednesday")
bên trong trường hợp thực thi và trường hợp chuyển đổi kết thúc. Nếu không có trường hợp nào phù hợp, câu lệnh bên trong thực thi mặc định .
Ví dụ 2: Câu lệnh chuyển đổi với đường dự phòng
Nếu bạn sử dụng fallthrough
từ khóa bên trong câu lệnh trường hợp, điều khiển sẽ chuyển sang trường hợp tiếp theo ngay cả khi giá trị trường hợp không khớp với biểu thức switch.
let dayOfWeek = 4 switch dayOfWeek ( case 1 : print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") fallthrough case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") )
Khi bạn chạy chương trình trên, kết quả đầu ra sẽ là:
thứ tư thứ năm
Trong chương trình trên, trường hợp 4 thực hiện báo cáo kết quả print("Wednesday")
và fallthrough
tiền thu được từ khóa để case5 . Câu lệnh print("Thursday")
bên trong trường hợp 5 thực thi ngay cả khi trường hợp không khớp với biểu thức switch. Do đó, bạn có thể thấy đầu ra thứ Năm trong bảng điều khiển.
Ví dụ 3: Câu lệnh chuyển đổi với các mẫu phức tạp hơn
let programmingLanguage = (name: "Go", version: 10) switch programmingLanguage ( case (let name,let version) where (version < 0 && name.count < 0) : print("Invalid input") case ("Swift",let version) where version == 4: print("Found latest version of Swift") case ("Swift" ,… <4 ): print("Found older version of swift)") case ("Swift" ,4… ) : print("Swift version greater than 4 is not released yet") case ("Taylor Swift",30) : print("OMG. This is Taylor swift") case (let name, let version): print(""" Programming Language:(name) Version: (version) Status: Not found """) )
Khi bạn chạy chương trình trên, kết quả đầu ra sẽ là:
Ngôn ngữ lập trình: Phiên bản Go: 10 Tình trạng: Không tìm thấy
Trong chương trình trên, chúng ta đang so khớp lập trình biểu thức Ngôn ngữ của kiểu tuple với các trường hợp khác nhau như sau:
case (let name,let version) where (version < 0 && name.count < 0)
Trường hợp này liên kết giá trị biểu thức switch với các hằng số hoặc biến tạm thời để sử dụng trong phần thân của trường hợp vớilet
từ khóa. Điều này được gọi là ràng buộc giá trị.
Bạn cũng có thể áp dụng điều kiện cho các giá trị đó vớiwhere
mệnh đề. Đối với nhiều điều kiện where, bạn có thể nối chúng bằng&&
toán tử như trong ví dụ trên.
Nếu trường hợp không thỏa mãn điều kiện được xác định bên trong mệnh đề where, các câu lệnh bên trong khối trường hợp đó sẽ không thực thi và chuyển sang so sánh trường hợp chuyển đổi tiếp theo.case ("Swift" ,… <4 )
Trường hợp này so khớp phần tử đầu tiên tuple với chuỗi ký tự"Swift"
và cũng kiểm tra xem phần tử thứ hai có nằm trong phạm vi một phía hay không… <4
.case ("Swift" ,4… )
Trường hợp này so khớp phần tử đầu tiên tuple với chuỗi ký tự"Swift"
và cũng kiểm tra xem phần tử thứ hai có nằm trong phạm vi một phía hay không4…
.case (let name, let version)
Trường hợp này liên kết mọi giá trị của các bộ giá trị với các hằng số hoặc biến tạm thời.