Ôn tập: quy trình dữ liệu
Thuộc phần Logic và luồng xử lý trong hành trình Ruby của Coddy. Bài học 27 trên 56.
Một thử thách đưa một tập dữ liệu nhỏ qua chuỗi phương thức Enumerable, giống như cách bạn sẽ viết Ruby trong thực tế.
Thử thách
Trung bìnhMảng orders đã cho, mỗi phần tử là một hash có :product, :qty và :price. In ra ba dòng:
- Tổng doanh thu từ tất cả đơn hàng (
qty * price, tính tổng). Dùngmap+reduce(:+)hoặcsum { ... }. - Số lượng đơn hàng có
qty >= 3(dùngcount). - Tên sản phẩm của đơn hàng có doanh thu cao nhất (dùng
max_by).
Với mảng mặc định, đầu ra là:
59
2
milkTự làm thử
orders = [
{ product: "apple", qty: 4, price: 2 },
{ product: "bread", qty: 1, price: 3 },
{ product: "milk", qty: 6, price: 4 },
{ product: "cheese", qty: 2, price: 12 }
]
# TODO: tính tổng doanh thu, đếm số đơn hàng có qty >= 3, tìm sản phẩm có doanh thu cao nhất
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