Menu
CoddyTech

学生を追加

CoddyのRubyジャーニー「ロジックとフロー」セクションの一部。レッスン 49/56。

共有のstudent_recordsハッシュに新しい生徒を登録するadd_studentメソッドを定義します。

重複を拒否するのが唯一の分岐です。生徒がすでに存在する場合は、その旨を報告して、上書きせずに戻ります。

challenge icon

チャレンジ

簡単

ファイルの先頭では、student_records = {}をそのままにしておきます。次に、以下の処理を行うメソッドadd_student(name, age, courses)を定義します。

  1. nameがすでにstudent_recordsのキーである場合は、Student '<name>' already exists.を出力して終了します。
  2. そうでなければ、{ age: age, grades: [], courses: courses }をnameに対応する値として保存し、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(グローバル変数)として宣言します。メソッド内でもその名前を使います。

自分で試してみよう

$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
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: Rubyオンラインコンパイラ