Hash Anahtarı Olarak Semboller
Coddy'nin Ruby Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 78 / 88.
Şimdiye kadar hash anahtarları olarak dizeleri, hash rocket söz dizimini kullanarak kullandın. Ancak Ruby geliştiricileri anahtar olarak genellikle bunun yerine sembolleri kullanır; bu da daha temiz ve verimli bir yaklaşım sunar.
Önceki konulardaki sembolleri hatırlıyor musun? Bunlar, iki nokta üst üste ile başlayan hafif ve değiştirilemez tanımlayıcılardır. Sembolleri anahtar olarak kullanırken Ruby özel bir kısa yazım biçimi sunar:
person = {name: "Alice", age: 25, city: "Paris"}
puts person # Çıktı: {:name=>"Alice", :age=>25, :city=>"Paris"}name: ifadesinin :name => ifadesinin yerini aldığına dikkat et. Bu kısa yazım yalnızca anahtar bir sembol olduğunda çalışır. Değerlere erişmek için köşeli parantezlerle birlikte sembolü kullan:
person = {name: "Alice", age: 25}
puts person[:name] # Çıktı: Alice
puts person[:age] # Çıktı: 25Girdileri eklemek ve değiştirmek aynı şekilde çalışır:
person = {name: "Alice"}
person[:city] = "Paris"
person[:name] = "Bob"
puts person # Çıktı: {:name=>"Bob", :city=>"Paris"}Semboller, dizelerden daha hızlı karşılaştırıldıkları ve daha az bellek kullandıkları için karma anahtarı olarak tercih edilir. Bu kalıpla Ruby kodlarında sık sık karşılaşacaksın, bu yüzden ona alışmaya değer.
Görev
KolayÜç satır girdi oku:
- Bir otomobil markası (dize)
- Bir model adı (dize)
- Bir yıl (tam sayı)
Aşağıdaki anahtar-değer çiftlerini içeren, sembol kısa yazım söz dizimini (ör. key: value) kullanarak car adlı bir karma oluştur:
:brandanahtarını otomobil markasına eşle:modelanahtarını model adına eşle:yearanahtarını yıla eşle (tam sayı olarak)
Ardından şu işlemleri gerçekleştir:
:modelanahtarının değerini yazdır"black"değerine sahip yeni bir:coloranahtarı ekle- Geçerli değerine 1 ekleyerek
:yearanahtarını güncelle - Son karmayı yazdır
Örneğin, girdiler Toyota, Camry ve 2020 ise çıktı şöyle olmalıdır:
Camry
{:brand=>"Toyota", :model=>"Camry", :year=>2021, :color=>"black"}Girdiler Honda, Civic ve 2018 ise çıktı şöyle olmalıdır:
Civic
{:brand=>"Honda", :model=>"Civic", :year=>2019, :color=>"black"}Girdiler Ford, Mustang ve 2023 ise çıktı şöyle olmalıdır:
Mustang
{:brand=>"Ford", :model=>"Mustang", :year=>2024, :color=>"black"}Kendin dene
# Girdiyi oku
brand = gets.chomp
model = gets.chomp
year = gets.chomp.to_i
# TODO: Kodunu aşağıya yaz
# 1. :brand, :model ve :year anahtarlarıyla sembol kısa yazım sözdizimini kullanarak 'car' adlı bir hash oluştur
# 2. :model anahtarının değerini yazdır
# 3. "black" değerine sahip yeni bir :color anahtarı ekle
# 4. :year anahtarının mevcut değerine 1 ekleyerek değerini güncelle
# 5. Son hash'i yazdırBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temel Bilgiler bölümündeki tüm dersler
4Operatörler Bölüm 2
Mantıksal Operatörler Bölüm 1Mantıksal Operatörler Bölüm 2Özet - Basit MantıkMantıksal Operatörler Bölüm 3Mantıksal Operatörler Bölüm 47Hesap Paylaşımı Hesaplayıcısı
Hoş Geldiniz MesajıKullanıcı Girdisi Alma13İleri Seviye Diziler
Aralıklar ile Dizi Dilimlemeİndeksler ile Dizi DilimlemeDizi OperatörleriInclude? Metodu2Değişkenler ve Veri Tipleri
Sayılar ve DeğişkenlerString Veri TipiBoolean Veri TipiSymbol Veri TipiVeri Tiplerini Kontrol Etmeİsimlendirme KurallarıÖzet - Değişken Oluşturma8Döngüler
Aralıklar ile For DöngüsüWhile DöngüsüBreakNextÖzet - FaktöriyelTimes DöngüsüUntil Döngüsüİç İçe DöngülerÖzet - Dinamik Girdi11Diziler
Dizi OluşturmaDizi Elemanlarına ErişmeDizileri DeğiştirmeDizi MetotlarıÖzet - Ürün DizisiÖzet - Ters Çevrilmiş DiziDizi Kısayolları14Hash'ler
Hash OluşturmaHash Elemanlarına ErişimHash'leri GüncellemeHash MetotlarıÖzet - Ürün Hash'iHash Anahtarı Olarak Semboller3Operatörler Bölüm 1
Aritmetik OperatörlerModulo OperatörüAritmetik KısayollarÖzet - Basit MatematikKarşılaştırma Operatörleri6Temel IO
puts ile Çıktı Almaprint ve p ile Çıktı AlmaDeğişkenlerle Çıktı Almagets ile Girdi AlmaChomp MetoduTip DönüşümüÖzet - Yaş HesaplayıcıÖzet - Doğru mu Yanlış mı9Metotlar
Metot TanımlamaMetot ParametreleriDönüş DeğerleriÖzet - Sigma MetoduÖzet - Doğrulama MetoduVarsayılan Parametre Değerleri12Koleksiyonlar Üzerinde Yineleme
Each Yineleyicisiİndeks ile EachStringler Üzerinde YinelemeMap ve CollectKendi başına pratik yap: Online Ruby derleyicisi