Hash Anahtarı Olarak Semboller
Coddy'nin Ruby Journey'sinin Temeller bölümünün bir parçası — ders 78 / 88.
Şimdiye kadar, hash rocket sözdizimi ile string'leri hash anahtarları olarak kullanıyordunuz. Ancak, Ruby geliştiricileri genellikle bunun yerine sembolleri anahtar olarak kullanırlar; bu da daha temiz ve daha verimli bir yaklaşım sunar.
Daha önceki sembolleri hatırlıyor musunuz? Bunlar, iki nokta üst üste ile başlayan hafif, değiştirilemez tanımlayıcılardır. Sembolleri anahtar olarak kullanırken, Ruby özel bir kısa yazım sözdizimi sağlar:
person = {name: "Alice", age: 25, city: "Paris"}
puts person # Çıktı: {:name=>"Alice", :age=>25, :city=>"Paris"}name: ifadesinin :name => ifadesinin yerini aldığına dikkat edin. Bu kısayol yalnızca anahtar bir sembol olduğunda çalışır. Değerlere erişmek için köşeli parantezlerle birlikte sembolü kullanın:
person = {name: "Alice", age: 25}
puts person[:name] # Çıktı: Alice
puts person[:age] # Çıktı: 25Kayıt ekleme ve değiştirme işlemleri aynı şekilde çalışır:
person = {name: "Alice"}
person[:city] = "Paris"
person[:name] = "Bob"
puts person # Çıktı: {:name=>"Bob", :city=>"Paris"}Semboller, stringlerden daha hızlı karşılaştırıldıkları ve daha az bellek kullandıkları için hash anahtarları olarak tercih edilirler. Bu deseni Ruby kodları genelinde göreceksiniz, bu yüzden buna alışmanızda fayda var.
Görev
KolayÜç satırlık girdi okuyun:
- Bir araba markası (string)
- Bir model adı (string)
- Bir yıl (integer)
Aşağıdaki anahtar-değer çiftlerini içeren, sembol kısa yazım sözdizimini (örneğin, key: value) kullanarak car adında bir hash oluşturun:
- araba markasına eşlenmiş
:brand - model adına eşlenmiş
:model - yıla (integer olarak) eşlenmiş
:year
Ardından şu işlemleri gerçekleştirin:
:modelanahtarının değerini yazdırın"black"değerine sahip yeni bir:coloranahtarı ekleyin:yearanahtarını, mevcut değerine 1 ekleyerek güncelleyin- Son hash'i yazdırın
Ö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"}Kopya kağıdı
Ruby, sembol anahtarlarıyla hash'ler oluşturmak için kısa bir sözdizimi sağlar:
person = {name: "Alice", age: 25, city: "Paris"}Bu, sembollerle hash rocket sözdizimini kullanmaya eşdeğerdir:
person = {:name => "Alice", :age => 25, :city => "Paris"}Sembol anahtarlı bir hash'ten değerlere erişmek için sembolle birlikte köşeli parantez kullanın:
puts person[:name] # Çıktı: Alice
puts person[:age] # Çıktı: 25Giriş ekleme ve değiştirme, dize (string) anahtarlarıyla aynı şekilde çalışır:
person[:city] = "Paris" # Yeni anahtar-değer çifti ekle
person[:name] = "Bob" # Mevcut değeri değiştirSemboller, dizelerden daha hızlı karşılaştırıldıkları ve daha az bellek kullandıkları için hash anahtarları olarak tercih edilirler.
Kendin dene
# Girdiyi oku
brand = gets.chomp
model = gets.chomp
year = gets.chomp.to_i
# YAPILACAK: Kodunuzu aşağıya yazın
# 1. :brand, :model ve :year anahtarlarını kullanarak sembol kısa yazım sözdizimiyle 'car' adında bir hash oluşturun
# 2. :model anahtarının değerini yazdırın
# 3. "black" değeriyle yeni bir :color anahtarı ekleyin
# 4. :year anahtarını mevcut değerine 1 ekleyerek güncelleyin
# 5. Nihai hash'i yazdırınBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller 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 Collect