Menu
CoddyTech

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 đè.

challenge icon

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:

  1. Nếu name đã là một khóa trong student_records, in ra Student '<name>' already exists. rồi kết thúc.
  2. Nếu không, lưu { age: age, grades: [], courses: courses } dưới khóa name rồi in ra Student '<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
quiz iconTự kiểm tra

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ý

Tự luyện tập: Trình biên dịch Ruby online