Öğrenci Ekle
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 49 / 56.
Paylaşılan student_records hash'ine yeni bir öğrenci kaydeden add_student yöntemi tanımla.
Yinelenen kayıtları reddetmek tek daldır; öğrenci zaten varsa bunu bildir ve üzerine yazmadan geri dön.
Görev
KolayDosyanın en üstünde student_records = {} ifadesini tut. Ardından şu işlemleri yapan bir add_student(name, age, courses) yöntemi tanımla:
name,student_recordsiçinde zaten bir anahtarsaStudent '<name>' already exists.ifadesini yazdırır ve geri döner.- Aksi takdirde
{ age: age, grades: [], courses: courses }ifadesininameanahtarının altında saklar veStudent '<name>' added.ifadesini yazdırır.
Dosyanın en altındaki test bloğunu şununla değiştir:
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspectBeklenen çıktı:
Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}Yöntemler, kapsayan betikteki yerel değişkenleri göremediğinden, yöntemin bu değişkeni okuyup güncelleyebilmesi için student_records değişkenini global bir değişken olan $student_records ile tanımla. Yöntemin içinde de bu adı kullan.
Kendin dene
$student_records = {}
# TODO: def add_student(name, age, courses) tanımla, yinelenen kayıtları önle,
# { age:, grades: [], courses: } yapısını sakla, eklendi/zaten mevcut mesajını yazdır
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts $student_records.inspect
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1Dizeler Detaylı İnceleme
Dize Metotlarına Genel BakışDize EnterpolasyonuDizeler Üzerinde YinelemeBölme ve BirleştirmeTekrar - Dize Dokuyucu4Bloklar, Proc'lar ve Lambda'lar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar SözcüğüBlok ParametreleriProc'lar ve Lambda'larÖzet - Özel Yineleyici7Hash'ler 2. Bölüm
Varsayılanlarla Hash.newHash'ler Üzerinde Yinelemeİç İçe Hash'lerBirleştirme ve DönüştürmeTekrar - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Seçme ve ReddetmeMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byTekrar - Veri HattıKendi başına pratik yap: Online Ruby derleyicisi