Bài 5 - Hướng dẫn lập trình groovy: Vòng lặp trong groovy

 Tất tần tật về vòng lặp trong groovy

loop-in-groovy

Vòng lặp là một tính năng thiết yếu trong mọi Ngôn ngữ lập trình bao gồm cả Groovy. Lặp lại câu lệnh luồng điều khiển để duyệt qua hoặc lặp lại các mục trong bộ sưu tập, mảng, danh sách, bộ, v.v. Có rất nhiều cách để lặp qua bộ sưu tập, mảng, danh sách hoặc tập hợp trong Groovy. Nó có thể sử dụng vòng lặp cổ điển for, do-while, while, for-in, each hoặc lần. Lần này, tôi sẽ giới thiệu cho bạn các ví dụ được sử dụng trong các dự án Groovy thực tế.


Phụ lục

For Loop

Một cú pháp đơn giản cho phép tạo vòng lặp với các collection, array, list.

def cars = ["BMW", "Mercedes Benz", "Volvo", "Chevrolet", "Ford"]

for (int i = 0; i < cars.size(); i++) {
    println cars[i]
}
Kết quả trên màn hình sẽ là:

BMW
Mercedes Benz
Volvo
Chevrolet
Ford

Cú pháp khá là na ná java đúng không nào. Một ví dụ khác về vòng lặp với các biểu thức được phân tách bằng dấu phẩy:

for (int i = 1, j = 10; i < j; i++, j--) {
    println(i + ', ' + j)
}
1, 10
2, 9
3, 8
4, 7
5, 6

Thêm phần tử vào một mảng mới thông qua for loop:

def sku = []
for (def (String a, int b) = ['AA', 1000]; b < 1010; a++, b++) {
    sku << "$a$b"
}
println sku
[AA1000, AB1001, AC1002, AD1003, AE1004, AF1005, AG1006, AH1007, AI1008, AJ1009]

For In Loop

Khác một chút với for-loop, for-in-loop tối giản hơn về cú pháp giúp chúng ta có thể thao tác nhanh gọn hơn với từng item mà không cần thông qua index. Nó cũng tương tự như for-in-loop trong javascript vậy.

@groovy.transform.Canonical
class Cars {
    String brand = ""
    String type = ""
    Integer price = 0 
}

List<Cars> cars = [
    [brand: "BMW", type: "750i", price: 300000],
    [brand: "Mercedes Benz", type: "B600", price: 120000],
    [brand: "Volvo", type: "S230", price: 98000]
]

for (car in cars) {
    println "$car.brand $car.type -> $car.price"
}
BMW 750i -> 300000
Mercedes Benz B600 -> 120000
Volvo S230 -> 98000

Một ví dụ khác:

def carNameArray = ["BMW", "Mercedez Benz", "Volvo"]

for (car in carNameArray) {
    println car
}
BMW
Mercedez Benz
Volvo

Ta cũng có thể thay đổi properties của từng phần tử ta lặp qua:

def map = ['BMW': 300000, 'Mercedez Benz': 200000, 'Volvo': 90000]

for ( m in map ) {
    println "$m.key -> $m.value" 
}
BMW -> 300000
Mercedez Benz -> 200000
Volvo -> 90000

Hay có thể gọi trực tiếp giá trị của từng phần tử thông qua câu lệnh .values()

def map2 = ['BMW': 300000, 'Mercedez Benz': 200000, 'Volvo': 90000]

for ( m2 in map2.values() ) {
    println m2
}
300000
200000
90000

Vòng lặp cũng có thể thao tác trên string:

def codeName = "abcdef0123456789"

for (s in codeName) {
    print "$s "
}
a b c d e f 0 1 2 3 4 5 6 7 8 9

While Loop

Một cú pháp while-loop trong groovy cơ bản có thể được viết như sau:

def cars = ["BMW", "Mercedez Benz", "Volvo"]
def x = 0

while ( x < cars.size() ) {
    println(cars[x])
    x++
}
BMW
Mercedez Benz
Volvo

Do/While Loop

Bổ trợ thêm cho while-loop trong groovy, do/while giúp ta có một cú pháp dễ đọc và tường minh hơn

def cars = ["BMW", "Mercedez Benz", "Volvo"]
def x = 0

do {
    println cars[x]
    x++
} while(cars.size() > x)
BMW
Mercedez Benz
Volvo

Each Loop

Đối với bản thân mình, đây là cú pháp để sử dụng vòng lặp trong groovy mà mình thích nhất. Có thể nó không phải cú pháp thực hiện nhanh nhất nhưng nó lại rất tối giản, nhỏ gọn, dễ đọc.

@groovy.transform.Canonical
class Cars {
    String brand = ""
    String type = ""
    Integer price = 0 
}

List<Cars> cars = [
    [brand: "BMW", type: "750i", price: 300000],
    [brand: "Mercedes Benz", type: "B600", price: 120000],
    [brand: "Volvo", type: "S230", price: 98000]
]

cars.each {
    println "$it.brand $it.type -> $it.price"
}
BMW 750i -> 300000
Mercedes Benz B600 -> 120000
Volvo S230 -> 98000
Ta cũng có thể hoàn toàn lấy được index thông qua:

cars.eachWithIndex { c, idx ->
    println idx+1 + ". $c.brand $c.type -> $c.price"
}
1. BMW 750i -> 300000
2. Mercedes Benz B600 -> 120000
3. Volvo S230 -> 98000

Times Loop

Thường thì mình không dùng hàm này vì nó khá là giống với eachIndex.

@groovy.transform.Canonical
class Cars {
    String brand = ""
    String type = ""
    Integer price = 0 
}

List<Cars> cars = [
    [brand: "BMW", type: "750i", price: 300000],
    [brand: "Mercedes Benz", type: "B600", price: 120000],
    [brand: "Volvo", type: "S230", price: 98000]
]

cars.size().times { it ->
    println cars[it]
}
[brand:BMW, type:750i, price:300000]
[brand:Mercedes Benz, type:B600, price:120000]
[brand:Volvo, type:S230, price:98000]

Bài 5 - Hướng dẫn lập trình groovy: Vòng lặp trong groovy Bài 5 - Hướng dẫn lập trình groovy: Vòng lặp trong groovy Reviewed by David on tháng 10 09, 2024 Rating: 5

Không có nhận xét nào:

Được tạo bởi Blogger.