学生を追加
CoddyのRubyジャーニー「ロジックとフロー」セクションの一部。レッスン 49/56。
共有のstudent_recordsハッシュに新しい生徒を登録するadd_studentメソッドを定義します。
重複を拒否するのが唯一の分岐です。生徒がすでに存在する場合は、その旨を報告して、上書きせずに戻ります。
チャレンジ
簡単ファイルの先頭では、student_records = {}をそのままにしておきます。次に、以下の処理を行うメソッドadd_student(name, age, courses)を定義します。
nameがすでにstudent_recordsのキーである場合は、Student '<name>' already exists.を出力して終了します。- そうでなければ、
{ 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
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Rubyオンラインコンパイラ