학생 추가
Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 49번째.
공유된 student_records 해시에 새로운 학생을 등록하는 add_student 메서드를 정의하세요.
중복을 거부하는 것이 유일한 분기이며, 학생이 이미 존재하면 이를 알리고 덮어쓰지 않고 반환합니다.
챌린지
쉬움파일 상단에 student_records = {}를 유지하세요. 그런 다음 다음을 수행하는 add_student(name, age, courses) 메서드를 정의하세요:
- 만약
name이 이미student_records의 키로 존재한다면,Student '<name>' already exists.를 출력하고 반환합니다. - 그렇지 않으면
name아래에{ age: age, grades: [], courses: courses }를 저장하고Student '<name>' added.를 출력합니다.
파일 하단에서 테스트 블록을 다음으로 교체하세요:
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspect예상 출력 결과는 다음과 같습니다:
Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}메서드는 감싸고 있는 스크립트의 지역 변수를 볼 수 없으므로, 메서드가 읽고 업데이트할 수 있도록 student_records를 $student_records(전역 변수)로 선언하세요. 메서드 내부에서도 해당 이름을 사용하세요.
치트 시트
전역 변수($variable_name)를 사용하여 메서드가 자신의 스코프 밖에서 정의된 변수에 접근하고 수정할 수 있도록 합니다:
$student_records = {}
def add_student(name, age, courses)
if $student_records.key?(name)
puts "Student '#{name}' already exists."
return
end
$student_records[name] = { age: age, grades: [], courses: courses }
puts "Student '#{name}' added."
end주요 사항:
- 변수 앞에
$를 붙여 전역 변수로 만듭니다 (메서드 내부에서 접근 가능) .key?(name)을 사용하여 해시에 이미 키가 포함되어 있는지 확인합니다return을 사용하여 중복을 처리한 후 메서드를 조기에 종료합니다
직접 해보기
$student_records = {}
# TODO: def add_student(name, age, courses), 중복 방지 처리,
# { age:, grades: [], courses: } 형태로 저장, 추가됨/이미 존재함 메시지 출력
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts $student_records.inspect
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.