Menu
Coddy logo textTech

Öğ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.

challenge icon

Görev

Kolay

Dosyanızın en üstünde student_records = {} ifadesini tutun. Ardından şunları yapan bir add_student(name, age, courses) metodu tanımlayın:

  1. Eğer name zaten student_records içinde bir anahtar ise, Student '<name>' already exists. yazdırır ve geri döner.
  2. Aksi takdirde { age: age, grades: [], courses: courses } verisini name altına kaydeder ve Student '<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.inspect

Beklenen çı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 return kullanı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
quiz iconKendini test et

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