Tambahkan Siswa
Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 49 dari 56.
Definisikan method add_student yang mendaftarkan siswa baru di hash bersama student_records.
Menolak duplikat adalah satu-satunya percabangan. Jika siswa sudah ada, laporkan hal itu dan kembalilah tanpa menimpa data.
Tantangan
MudahDi bagian atas file-mu, pertahankan student_records = {}. Lalu definisikan method add_student(name, age, courses) yang:
- Jika
namesudah menjadi kunci dalamstudent_records, cetakStudent '<name>' already exists.lalu kembalikan. - Jika tidak, simpan
{ age: age, grades: [], courses: courses }di bawahnamedan cetakStudent '<name>' added.
Di bagian bawah file-mu, ganti blok pengujian dengan:
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspectOutput yang diharapkan adalah:
Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}Karena method tidak dapat melihat variabel lokal dari skrip yang membungkusnya, deklarasikan student_records dengan $student_records (variabel global) agar method dapat membaca dan memperbaruinya. Gunakan nama itu juga di dalam method.
Coba sendiri
$student_records = {}
# TODO: definisikan add_student(name, age, courses), cegah data duplikat,
# simpan { age:, grades: [], courses: }, tampilkan pesan berhasil ditambahkan atau sudah ada
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts $student_records.inspect
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami String
Ringkasan Method StringInterpolasi StringMenelusuri StringMemisahkan dan MenggabungkanRekap: Perangkai String4Block, Proc, dan Lambda
Apa Itu Block?do..end vs Kurung KurawalKata Kunci yieldParameter BlockProc dan LambdaRangkuman, Iterator Kustom7Hash Bagian 2
Hash.new dengan Nilai BawaanMenelusuri HashHash BersarangMenggabungkan dan MengubahRangkuman: Penghitung Frekuensi10Proyek: Data Siswa
Gambaran Umum ProyekTambahkan Siswa5Andalan Enumerable
Select dan RejectMerangkai MapReduce / Injectcount, all?, any?, none?group_by dan partitionsort_by, min_by, max_byRekap: Alur Data8Pengambilan Keputusan Lanjutan
Case dengan class & regexwhen dengan Banyak NilaiOperator Ternaryif / unless SebarisUlasan, Pengklasifikasi NilaiLatihan sendiri: Compiler Ruby online