Tổng quan dự án
Thuộc phần Logic và luồng xử lý trong hành trình Ruby của Coddy. Bài học 48 trên 56.
Bạn sẽ xây dựng một hệ thống hồ sơ học sinh nhỏ dưới dạng một tập hợp các phương thức cùng dùng chung một hash lồng nhau. Cấu trúc khác với Library Manager, lần này không có vòng lặp menu, chỉ có các hàm mà bạn sẽ tiếp tục mở rộng.
Trạng thái nằm trong một hash cấp cao nhất duy nhất:
student_records = {}Mỗi mục sẽ dùng tên làm khóa, còn giá trị băm chứa tuổi, điểm số và các khóa học của học viên:
{
"Alice" => { age: 20, grades: [], courses: ["Math", "Physics"] }
}Mỗi bài học bổ sung một phương thức thao tác trên hash này: add_student, add_grade, average_grade, list_by_course, top_students.
Thử thách
Người mớiKhởi tạo một hash rỗng tên là student_records ở đầu tệp. Sau đó in nó bằng inspect để test thấy:
{}Đó là toàn bộ nhiệm vụ, bài học này chỉ thiết lập trạng thái dùng chung cho mọi thứ tiếp theo.
Tự làm thử
# TODO: khởi tạo student_records = {} rồi dùng inspect để in ra
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