06/04/2021, 14:47

Lệnh break trong Swift - Swift căn bản

Trong bài này mình sẽ giới thiệu một lệnh có công dụng rất hay, đó là lệnh Break trong Swift. Lệnh này thường dùng trong vòng lặp và lênh Switch Case để dừng chương trình. 1. Cú pháp lệnh Switch trong Swift Trong swift, lệnh break sẽ dừng hoặc kết thúc thực thi các câu lệnh tại ngay lập tức ...

Trong bài này mình sẽ giới thiệu một lệnh có công dụng rất hay, đó là lệnh Break trong Swift. Lệnh này thường dùng trong vòng lặp và lênh Switch Case để dừng chương trình.

1. Cú pháp lệnh Switch trong Swift

Trong swift, lệnh break sẽ dừng hoặc kết thúc thực thi các câu lệnh tại ngay lập tức trong luồng hiện tại. Ta có thể sử dụng lệnh break trong câu lệnh Switch để dừng thực thi một Case nào đó, hoặc trong các vòng lặp để dừng vòng lặp.

Điều này khác hoàn toàn với lệnh continue, bởi lệnh continue chỉ bỏ qua lần lặp hiện tại và tiếp tục với lần lặp tiếp theo.

Cú pháp break như sau:

break

Hãy xem một ví dụ khi sử dụng lệnh break trong vòng lặp For-In.

for i in 1...5 {
    if i == 4 {
        break
    }
    print("i = (i)")
}
print("Kết thúc")

Chạy chương trình này bạn sẽ thu được kết quả như sau:

i = 1
i = 2
i = 3
Kết thúc

Ở lần lặp thứ 4 do thỏa điểu kiện ở if i == 4 nên lệnh break được thực thi, vì vậy Swift sẽ thoát khỏi vòng lặp nên tất cả những đoạn code phía dưới đều bị bỏ qua. Cuồi cùng nó in dòng chữ bên ngoài print("Kết thúc") vì dòng này không nằm ở trong vòng lặp.

2. Các ví dụ với Break trong Swift

Bây giờ ta sẽ làm thêm một vài ví dụ khác với lệnh Break trong Swif. Ở phần 1 mình đã lấy ví dụ với vòng lặp for rồi, vậy thì ở đây mình sẽ tiếp tục với vòng lặp while.

Break trong vòng lặp While

var currentLevel:Int = 1, finalLevel:Int = 2
var isLifeAvailable = true
while (isLifeAvailable) {
    
    if currentLevel > finalLevel {
        print("Game hoàn thành")
        break
    }
    //chơi game game và qua level tiếp theo
    currentLevel += 1
    print("Level tiếp theo")
}
print("Bên ngoài vòng lặp")

Kết quả:

Level tiếp theo
Level tiếp theo
Game hoàn thành
Bên ngoài vòng lặp

Trong ví dụ này nếu không có dòng break thì sẽ bị lắp vô hạn. Lý do là trong thân vòng lặp không hề có đoạn code nào thiết lập isLifeAvailable = false. Tuy nhiên nhờ lệnh break mà ta giải quyết được bài toán.

Nhìn kỹ hơn thì ta không cần biến isLifeAvailable cũng được, lúc này vòng lặp while sẽ chỉnh lai như sau:

while (true) {
    /// các đoạn code
]

Break trong vòng lặp lồng nhau

Lệnh break chỉ dừng vòng lặp trong một phạm vi nhất định. Nếu chương trình có nhiều vòng lặp lồng nhau, nếu bạn đặt lệnh break ở vòng lặp nào thì chỉ có vòng lặp đó bị ảnh hưởng bởi Break mà thôi.

for j in 1...2 {
    for i in 1...5 {
        if i == 4 {
            break
        }
        print("i = (i)")
    }
    print("j = (j)")
}

Kết quả:

i = 1
i = 2
i = 3
j = 1
i = 1
i = 2
i = 3
j = 2

Trong chương trình trên, câu lệnh break nằm trong if i == 4 chỉ chấm dứt việc thực hiện vòng lặp bên for i in1 ... 5. Tuy nhiên, nó tiếp tục thực hiện vòng lặp bên ngoài for j in1 ... 2.

Trường hợp bạn muốn thoát luôn cả vòng lặp bên ngoài thì làm thế nào? Lúc này bạn sẽ dùng label để lệnh Break trỏ tới. Hình ảnh minh họa như sau:

swift labeled break jpg

Xem ví dụ sau để hiểu rõ hơn.

outerloop: for j in 1...2{
    innerloop: for i in 1...5 {
        if i == 4 {
            break outerloop
        }
        print("i = (i)")
    }
    print("j = (j)")
}

Break trong Switch Case

Trong swift nếu chúng ta sử dụng câu lệnh break trong câu lệnh case thì nó sẽ ngắt toàn bộ code trong case đó, và lập tức thoát khỏi câu lệnh Switch.

Sau đây là ví dụ về việc sử dụng câu lệnh break trong Switch Case.

func Year(year: Int) -> Bool {
    switch (year) {
        case let number where (number % 200) == 0 && (number % 500) != 0:
        break

    case let number where (number % 5) == 0:
        return true
    default:
        break
    }

    return false
}

print(Year(2014))
print(Year(2000))
print(Year(1900))

Nếu bạn chưa học về function thì có thể bỏ qua trường hợp này, sau này quay lại học sau nhé.

Bùi Văn Nam

27 chủ đề

7090 bài viết

0