×

Duyệt qua mảng bằng phương thức each trong Ruby

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