Trong Ruby, việc duyệt qua mảng là một trong những tác vụ cơ bản nhưng vô cùng quan trọng. Một trong những phương thức phổ biến nhất để thực hiện điều này là sử dụng each
. Phương thức each
cho phép bạn xử lý từng phần tử trong mảng một cách tuần tự, điều này rất hữu ích trong nhiều tình huống lập trình. Hãy cùng tìm hiểu cách thức hoạt động và những ứng dụng phổ biến của phương pháp này.
Cách thức hoạt động của each
Phương thức each
thuộc về đối tượng mảng (Array) và được sử dụng để lặp qua từng phần tử của mảng đó. Khi bạn gọi each
trên một mảng, bạn cần cung cấp một khối lệnh (block) để xử lý từng phần tử.
Ví dụ cơ bản về each
:
numbers = [1, 2, 3, 4, 5]
numbers.each do |number|
puts number
end
Trong ví dụ trên, khối lệnh do |number| ... end
sẽ được thực thi cho từng phần tử trong mảng numbers
. Ở đây, number
là một biến tạm thời mà cứ mỗi lần lặp sẽ được gán giá trị của phần tử hiện tại trong mảng. Kết quả của ví dụ này sẽ là:
1
2
3
4
5
Ứng dụng của each
Tính tổng các phần tử
Bạn có thể dùng each
để tính tổng các phần tử trong một mảng:
numbers = [1, 2, 3, 4, 5]
sum = 0
numbers.each do |number|
sum += number
end
puts "Tổng của các phần tử là: #{sum}"
Kết quả sẽ là:
Tổng của các phần tử là: 15
Tìm kiếm phần tử
Phương thức each
cũng được sử dụng để kiểm tra xem liệu một phần tử cụ thể có tồn tại trong mảng hay không:
names = ["Alice", "Bob", "Charlie"]
found = false
names.each do |name|
if name == "Bob"
found = true
break
end
end
puts found ? "Phần tử tồn tại." : "Phần tử không tồn tại."
Ở đây, biến found
sẽ là true
nếu tìm thấy phần tử "Bob" trong mảng, ngược lại sẽ là false
.
Chuyển đổi mảng
Bạn có thể dùng each
để tạo ra một mảng mới từ mảng cũ bằng cách áp dụng một số thao tác với từng phần tử:
numbers = [1, 2, 3, 4, 5]
squares = []
numbers.each do |number|
squares << number ** 2
end
puts "Mảng các số bình phương: #{squares}"
Kết quả sẽ là:
Mảng các số bình phương: [1, 4, 9, 16, 25]
Một số lưu ý quan trọng
- Phương thức
each
không thay đổi mảng gốc. Nó chỉ lặp qua các phần tử và cho phép bạn thực hiện các thao tác trên chúng. each
có thể kết hợp với các phương thức khác nhưmap
,select
,reject
để thực hiện các phép biến đổi phức tạp hơn trên mảng.
Kết luận
Phương thức each
trong Ruby rất mạnh mẽ và linh hoạt. Nó không chỉ giúp bạn dễ dàng duyệt qua mảng mà còn mở ra nhiều khả năng xử lý dữ liệu phong phú. Hiểu và sử dụng thành thạo each
sẽ giúp bạn tối ưu hóa nhiều tác vụ lập trình hàng ngày, từ các thao tác đơn giản cho đến những xử lý phức tạp hơn trên dữ liệu.
Comments