Lệnh continue trong Kotlin
Trong bài này chúng ta sẽ học lệnh continue trong Kotlin, continue là lệnh được sử dụng trong vòng lặp để tiếp tục lặp cho lần tiếp theo.
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") } }
OUTPUT:
Bài viết này được đăng tại [free tuts .net]
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") } }
OUTPUT:
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") } } }
OUTPUT:
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") } } }
OUTPUT:
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.