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
endLệ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: 50Khô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.
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 để:
- In từng số nhân với 3 trên một dòng riêng
- 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: 27Nếu đầu vào là 10,20,30, đầu ra sẽ là:
30
60
90
Sum: 60Nếu đầu vào là 1,2,3,4, đầu ra sẽ là:
3
6
9
12
Sum: 10Nếu đầu vào là 5, đầu ra sẽ là:
15
Sum: 5Tự 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}"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
4Toán tử phần 2
Toán tử logic phần 1Toán tử logic phần 2Ôn tập: logic đơn giảnToán tử logic phần 3Toán tử logic phần 42Biến và kiểu dữ liệu
Số và biếnKiểu dữ liệu chuỗiKiểu dữ liệu BooleanKiểu dữ liệu SymbolKiểm tra kiểu dữ liệuQuy ước đặt tênÔn tập: tạo biến8Vòng lặp
Vòng lặp for với khoảng giá trịVòng lặp whileThoátTiếp tụcÔn tập: giai thừaVòng lặp timesVòng lặp untilVòng lặp lồng nhauÔn tập: đầu vào động3Toán tử phần 1
Toán tử số họcToán tử moduloPhép tính số học rút gọnÔn tập: Toán cơ bảnToán tử so sánh6Nhập xuất cơ bản
In ra bằng putsIn ra bằng print và pIn ra bằng biếnNhập dữ liệu bằng getsPhương thức chompChuyển đổi kiểu dữ liệuÔn tập: Tính tuổiÔn tập: Đúng hay sai9Phương thức
Định nghĩa phương thứcTham số phương thứcGiá trị trả vềÔn tập: phương thức SigmaÔn tập: phương thức xác thựcGiá trị tham số mặc định15Theo dõi chi tiêu hằng ngày
Tổng quan dự ánThoát chương trìnhTự luyện tập: Trình biên dịch Ruby online