Thêm học sinh
Thuộc phần Logic và luồng xử lý trong hành trình Ruby của Coddy. Bài học 49 trên 56.
Định nghĩa phương thức add_student để đăng ký học viên mới trong hash dùng chung student_records.
Từ chối mục trùng lặp là nhánh duy nhất. Khi học viên đã tồn tại, hãy thông báo và trả về mà không ghi đè.
Thử thách
DễỞ đầu tệp, giữ nguyên student_records = {}. Sau đó, định nghĩa phương thức (method) add_student(name, age, courses) như sau:
- Nếu
nameđã là một khóa trongstudent_records, in raStudent '<name>' already exists.rồi kết thúc. - Nếu không, lưu
{ age: age, grades: [], courses: courses }dưới khóanamerồi in raStudent '<name>' added.
Ở cuối tệp, thay khối kiểm thử bằng đoạn sau:
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspectĐầu ra dự kiến là:
Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}Vì phương thức không thể truy cập biến cục bộ từ tập lệnh bao quanh, hãy khai báo student_records bằng $student_records (một biến toàn cục) để phương thức có thể đọc và cập nhật biến này. Cũng dùng tên đó bên trong phương thức.
Tự làm thử
$student_records = {}
# TODO: định nghĩa hàm (function) add_student(name, age, courses), tránh thêm trùng lặp,
# lưu { age:, grades: [], courses: }, in ra thông báo đã thêm hoặc đã tồn tại
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts $student_records.inspect
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