Ôn tập: bộ lặp tùy chỉnh
Thuộc phần Logic và luồng xử lý trong hành trình Ruby của Coddy. Bài học 20 trên 56.
Hãy tạo phương thức trình lặp của riêng bạn, sử dụng yield, nhận một khối lệnh và trả về một giá trị hữu ích, kết hợp mọi thứ trong chương này.
Thử thách
Trung bìnhĐịnh nghĩa một phương thức có tên each_even, nhận một mảng numbers và chuyển từng số chẵn trong mảng vào khối lệnh của nó (bỏ qua hoàn toàn các số lẻ).
Sau đó, đọc một danh sách số nguyên được phân tách bằng dấu phẩy, gọi each_even với danh sách đó và một khối lệnh in ra "Even: <n>" cho mỗi giá trị được chuyển vào, rồi in ra:
Done: <count>Trong đó, count là số lượng số chẵn đã được chuyển vào.
Với đầu vào 1,2,3,4,5,6, đầu ra là:
Even: 2
Even: 4
Even: 6
Done: 3Tự làm thử
# TODO: định nghĩa each_even(numbers) để yield từng số chẵn
numbers = gets.chomp.split(",").map(&:to_i)
count = 0
# TODO: gọi each_even với một khối lệnh (block) in ra "Even: <n>"
# và tăng count sau mỗi giá trị được yield
puts "Done: #{count}"
Tất cả bài học trong Logic và luồng xử lý
1Tìm hiểu sâu về chuỗi
Tổng quan về phương thức chuỗiNội suy chuỗiDuyệt qua chuỗiTách và nối chuỗiÔn tập: Đan chuỗi4Khối lệnh, Proc và lambda
Khối lệnh là gì?do..end và dấu ngoặc nhọnTừ khóa yieldTham số của khối lệnhProc và lambdaÔn tập: bộ lặp tùy chỉnh7Hash, phần 2
Hash.new với giá trị mặc địnhLặp qua HashHash lồng nhauGộp và chuyển đổiÔn tập: Bộ đếm tần suất10Dự án: Hồ sơ học sinh
Tổng quan dự ánThêm học sinh2Phạm vi
Phạm vi là gì?Các phương thức của phạm viPhạm vi trong case / whenÔn tập: luyện tập với phạm vi5Sức mạnh của Enumerable
select và rejectNối chuỗi mapreduce / injectcount, all?, any?, none?group_by và partitionsort_by, min_by, max_byÔn tập: quy trình dữ liệuTự luyện tập: Trình biên dịch Ruby online