Ảnh chụp kho hàng
Thuộc phần Logic và luồng xử lý trong hành trình Ruby của Coddy. Bài học 55 trên 56.
Báo cáo tồn kho thực hành với hash, chuỗi Enumerable, group_by và một chút định dạng.
Thử thách
Trung bìnhĐã cho mảng inventory. Mỗi mục là một hash có :name, :category, :qty và :price.
In ra bốn dòng:
- Tổng giá trị hàng tồn kho của tất cả các mục (
qty * price, tính tổng), in dưới dạng số nguyên. - Danh mục có số lượng mục nhiều nhất, theo định dạng
Top category: <name> (<count>). Nếu hòa, xếp theo thứ tự bảng chữ cái của tên danh mục. - Tên các mục hết hàng (
qty == 0), xếp theo thứ tự bảng chữ cái và nối bằng,. Nếu không có mục nào, in(none). - Tên của 3 mục đắt nhất theo giá mỗi đơn vị, từ cao xuống thấp, nối bằng
,. Nếu hòa, xếp theo thứ tự bảng chữ cái của tên.
Với danh sách hàng tồn kho mặc định, đầu ra là:
232
Top category: food (3)
milk
chair, lamp, milkTự làm thử
inventory = [
{ name: "apple", category: "food", qty: 10, price: 2 },
{ name: "bread", category: "food", qty: 4, price: 3 },
{ name: "milk", category: "food", qty: 0, price: 4 },
{ name: "chair", category: "furniture", qty: 2, price: 35 },
{ name: "lamp", category: "furniture", qty: 5, price: 20 },
{ name: "pencil", category: "stationery", qty: 30, price: 1 }
]
# TODO: in ra tổng giá trị, danh mục đứng đầu, tên các mặt hàng hết hàng, 3 mặt hàng có giá cao nhất
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 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