Tất tần tật về vòng lặp trong 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]
}
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 tiếp theo: Bài 6 - Hướng dẫn lập trình groovy: Groovy Methods là gì
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:
Reviewed by David
on
tháng 10 09, 2024
Rating:

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