Lập trình Kotlin - Lệnh continue

Lệnh continue trong Kotlin

Cấu trúc continue bỏ qua lần lặp hiện tại của vòng lặp và thực hiện vòng lặp tiếp theo nếu điều kiện cho phép. Lệnh continue thường được sử dụng với lệnh if để bỏ qua lần lặp hiện tại của vòng lặp cho một điều kiện được chỉ định. Trong bài viết này, chúng ta sẽ cấu trúc của Continue và Continue Labels.

1.Ví dụ về continue trong Kotlin

Trước tiên hay xem ví dụ dưới đây. Trong ví dụ này vòng lặp for đã không in ra chuỗi after cho lần lặp thứ 2 và thứ 4.

fun main(args : Array<String>){
 
    for (n in 1..5){
        println("before continue, Loop: $n")
        if(n==2||n==4)
            continue
 
        println("after continue, Loop: $n")
 
    }
}

Kết quả:

17 Kotlin continue jpg

Như bạn có thể thấy trong đầu ra lệnh println("after continue, Loop: $n") đã không thực thi cho các vòng lặp n == 2 và n == 4 vì trên các lần lặp này, chúng ta đã sử dụng Contiue trước câu lệnh này đã bỏ qua phép lặp cho các giá trị này của n.

Tuy nhiên, bạn có thể quan sát rằng lệnh println("before continue, Loop: $n") được thực thi trên mỗi lần lặp bởi vì nó được thực thi trước khi gặp câu lệnh Continue.

Dựa trên điều này, bạn có thể kết luận rằng Continue bỏ qua lần lặp nhưng nó không bỏ qua các câu lệnh trước Continue. Ngay khi biên dịch đến Continue, điều khiển nhảy đến cuối vòng lặp, bỏ qua phần còn lại của câu lệnh.Hãy lấy một ví dụ khác

2. Ví dụ continue hiển thị số chẵn trong Kotlin

Hãy làm một ví dụ hiển thị các số chẵn bằng cách sử dụng lệnh continue để bỏ qua những số lẻ.

fun main(args : Array<String>){
 
    for (n in 1..10){
        if(n%2!=0)
            continue
 
        println("$n")
 
    }
}

Kết quả:

18 kotlin continue example 2 jpg

3.Continue Label

Cho đến bây giờ chúng ta đã học được cách thức mà Continue làm việc. Hãy tìm hiểu về Continue Label. Các nhãn cho chúng ta nhiều quyền kiểm soát hơn khi chúng ta xử lý các vòng lặp lồng nhau.

Hãy lấy một ví dụ trong đó trước tiên chúng ta không sử dụng Continue label và sau đó chúng ta sẽ lấy ví dụ tương tự nhưng với Continue label.

Ví dụ vòng lặp lồng nhau không sử dụng continue label

Trong ví dụ này, chúng ta có một vòng lặp lồng nhau và không sử dụng Continue label. Khi đó, chúng ta không có bất kỳ kiểm soát nào và ngay khi thực thi đến continue thì vòng lặp bên trong sẽ bị thoát ra và làm những công việc tiếp theo.

fun main(args : Array<String>){
 
    for (x in 'A'..'D'){
        for (n in 1..4){
            if (n==2||n==4)
                continue
 
            println("$x and $n")
        }
 
    }
}

Kết quả:

A and 1
A and 3
B and 1
B and 3
C and 1
C and 3
D and 1
D and 3

Ví dụ vòng lặp lồng nhau có sử dụng continue label

Bạn có thể thấy trong ví dụ đầu ra ở trên, với n giá trị 2 và 4, vòng lặp bên trong đã bị bỏ qua. Khi chúng ta muốn bỏ qua vòng lặp khi thực thi Continue và nhảy đến vòng lặp for bên ngoài, chúng ta có thể làm như vậy bằng cách sử dụng Continue label.

fun main(args : Array<String>){
 
    myloop@ for (x in 'A'..'D'){
        for (n in 1..4){
            if (n==2||n==4)
                continue@myloop
 
            println("$x and $n")
        }
 
    }
}

Kết quả:

A and 1
B and 1
C and 1
D and 1

Về cơ bản những gì đã xảy ra ở đây là ngay khi giá trị n đạt 2, điều khiển sẽ nhảy đến cuối vòng lặp bên ngoài và tiếp tục lặp. Cú pháp của continue label khá đơn giản vì bạn chỉ cần đặt tên cho nhãn theo sau là biểu tượng @ và cùng tên cần được thêm vào câu lệnh continue như trong ví dụ trên.