Projeye Genel Bakış
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 48 / 56.
Hepsi tek bir iç içe geçmiş hash (nested hash) paylaşan bir dizi metot olarak küçük bir öğrenci kayıt sistemi oluşturacaksınız. Library Manager'dan farklı bir yapıda, bu sefer menü döngüsü yok, sadece genişletmeye devam edeceğiniz fonksiyonlar var.
Durum, tek bir üst düzey hash içinde bulunur:
student_records = {}Her giriş isimle anahtarlanacak ve öğrencinin yaşını, notlarını ve derslerini içeren bir hash değerine sahip olacaktır:
{
"Alice" => { age: 20, grades: [], courses: ["Math", "Physics"] }
}Her ders, bu hash üzerinde işlem yapan bir metot ekler: add_student, add_grade, average_grade, list_by_course, top_students.
Görev
BaşlangıçDosyanızın en üstünde student_records adında boş bir hash oluşturun. Ardından, testin şunu görmesi için onu inspect ile yazdırın:
{}Tüm görev bu; bu ders sadece bundan sonra gelecek her şey için paylaşılan durumu ayarlar.
Kopya kağıdı
Öğrenci kayıt sistemi, paylaşılan durum olarak tek bir iç içe geçmiş hash kullanır:
student_records = {}
Her giriş, öğrenci adına göre anahtarlanır ve age, grades ve courses içeren bir hash ile eşleşir:
{
"Alice" => { age: 20, grades: [], courses: ["Math", "Physics"] }
}Bir hash'in içeriğini yazdırmak için inspect kullanın:
puts student_records.inspectKendin dene
# TODO: student_records = {} ilklendir ve inspect ile yazdır
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ı