Öğ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 bir add_student metodu tanımlayın.
Tek koşul kopya kayıtları reddetmektir; bir öğrenci zaten mevcutsa, bunu bildirin ve üzerine yazmadan geri dönün.
Görev
KolayDosyanızın en üstünde student_records = {} ifadesini tutun. Ardından şunları yapan bir add_student(name, age, courses) metodu tanımlayın:
- Eğer
namezatenstudent_recordsiçinde bir anahtar ise,Student '<name>' already exists.yazdırır ve geri döner. - Aksi takdirde
{ age: age, grades: [], courses: courses }verisininamealtına kaydeder veStudent '<name>' added.yazdırır.
Dosyanızın en altındaki test bloğunu şununla değiştirin:
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspectBeklenen çıktı şudur:
Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}Metotlar kapsayıcı betikteki yerel değişkenleri göremediği için, metodun okuyabilmesi ve güncelleyebilmesi için student_records değişkenini $student_records (bir global) olarak bildirin. Metot içinde de bu ismi kullanın.
Kopya kağıdı
Metotların kendi kapsamları dışında tanımlanan değişkenlere erişebilmesi ve bunları değiştirebilmesi için global bir değişken ($variable_name) kullanın:
$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Önemli noktalar:
- Bir değişkeni global (metotların içinden erişilebilir) yapmak için başına
$ekleyin - Bir hash'in zaten bir anahtar içerip içermediğini kontrol etmek için
.key?(name)kullanın - Bir kopyayı işledikten sonra metottan erken çıkmak için
returnkullanın
Kendin dene
$student_records = {}
# YAPILACAK: def add_student(name, age, courses), kopyalara karşı koruma sağla,
# { age:, grades: [], courses: } şeklinde sakla, eklendi/zaten mevcut 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
1Derinlemesine Stringler
String Metotlarına Genel BakışString InterpolationStringler Üzerinde GezinmeSplit ve JoinÖzet - String Weaver4Bloklar, Procs ve Lambdalar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar KelimesiBlok ParametreleriProcs ve LambdalarÖzet - Özel İteratör7Hashes Bölüm 2
Varsayılan Değerlerle Hash.newHash Yapıları Üzerinde Yinelemeİç İçe Hash YapılarıBirleştirme ve DönüştürmeÖzet - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Select ve RejectMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byÖzet - Data Pipeline8İleri Seviye Karar Yapıları
Sınıflar ve Regex ile CaseÇok Değerli whenTernary OperatörüSatır İçi if / unlessÖzet - Not Sınıflandırıcı