Menu
CoddyTech

Trình lặp each

Thuộc phần Kiến thức nền tảng trong hành trình Ruby của Coddy. Bài học 65 trên 88.

Ruby cung cấp một cách thanh lịch hơn để lặp qua mảng so với việc dùng vòng lặp for hoặc while. Trình lặp each là cách Ruby ưu tiên để xử lý mọi phần tử trong một tập hợp.

Đây là cú pháp cơ bản:

fruits = ["apple", "banana", "cherry"]

fruits.each do |fruit|
  puts fruit
end

Lệnh này in ra từng loại trái cây trên một dòng riêng. Biến (variable) nằm giữa hai dấu gạch đứng (|fruit|) được gọi là biến khối. Biến này tạm thời lưu từng phần tử khi bộ lặp duyệt qua mảng.

Với các khối lệnh một dòng, bạn có thể dùng dấu ngoặc nhọn thay cho do...end:

numbers = [1, 2, 3]
numbers.each { |n| puts n * 2 }

Phương thức each rất mạnh mẽ vì bạn có thể thực hiện bất kỳ thao tác nào trên từng phần tử. Đây là ví dụ tính tổng lũy kế:

prices = [10, 25, 15]
total = 0

prices.each do |price|
  total += price
end

puts total  # Đầu ra: 50

Không giống vòng lặp for, biến khối trong each chỉ tồn tại trong khối, giúp code gọn gàng hơn và ít có khả năng gây ra hành vi không mong muốn.

challenge icon

Thử thách

Dễ

Đọc một dòng đầu vào chứa các số nguyên được phân tách bằng dấu phẩy (ví dụ: 4,7,2,9,5).

Tách đầu vào thành một mảng số nguyên, sau đó dùng trình lặp each để:

  1. In từng số nhân với 3 trên một dòng riêng
  2. Tính tổng tất cả các số và in tổng đó sau vòng lặp

Trước vòng lặp, hãy khởi tạo một biến bằng 0 để cộng dồn tổng khi bạn duyệt qua mảng.

Ví dụ, nếu đầu vào là 4,7,2,9,5, đầu ra sẽ là:

12
21
6
27
15
Sum: 27

Nếu đầu vào là 10,20,30, đầu ra sẽ là:

30
60
90
Sum: 60

Nếu đầu vào là 1,2,3,4, đầu ra sẽ là:

3
6
9
12
Sum: 10

Nếu đầu vào là 5, đầu ra sẽ là:

15
Sum: 5

Tự làm thử

# Đọc các số nguyên (integer) được phân tách bằng dấu phẩy
input = gets.chomp

# Tách đầu vào (input) thành mảng (array) các số nguyên
numbers = input.split(",").map(&:to_i)

# Khởi tạo biến (variable) sum
sum = 0

# TODO: Viết code của bạn bên dưới
# Dùng bộ lặp each để:
# 1. In ra mỗi số sau khi nhân với 3
# 2. Cộng mỗi số vào biến sum

# In ra tổng cuối cùng
puts "Sum: #{sum}"
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Ruby online