Anahtar-Değer Çiftleri Ekleme
Coddy'nin Rust Journey'sinin Logic & Flow bölümünün bir parçası — ders 29 / 66.
Artık boş bir hash map'iniz olduğuna göre, ona biraz veri eklemenin zamanı geldi. .insert() metodunu kullanarak bir hash map'e anahtar-değer çiftleri ekleyebilirsiniz:
let mut capitals = HashMap::new();
capitals.insert("France", "Paris");
capitals.insert("Japan", "Tokyo");.insert() yöntemi iki parametre alır: anahtar (key) ve değer (value). Bu örnekte, ülke isimlerini anahtar, başkentlerini ise değer olarak saklıyoruz.
Hatırlanması gereken önemli bir davranış vardır: Eğer hash map'te zaten var olan bir anahtarı eklerseniz, yeni değer eskisinin üzerine yazılacaktır:
capitals.insert("France", "Lyon"); // Bu, "Paris"in üzerine yazarBu işlemden sonra, "France" araması yapmak "Paris" yerine "Lyon" döndürecektir. Bu üzerine yazma davranışı, .insert() metodunu hash map'inize hem yeni girişler eklemek hem de mevcut olanları güncellemek için kullanışlı hale getirir.
Görev
KolayÜç girdi alacaksınız: bir ürün adı, fiyatı (ondalık sayı olarak) ve başka bir ürün adı. Ürün adlarını anahtar (String türünde) ve fiyatlarını değer (f64 türünde) olarak saklamak için değiştirilebilir (mutable) bir hash map oluşturun. İlk ürünü fiyatıyla birlikte hash map'e ekleyin. Ardından ikinci ürünü 0.0 fiyatıyla ekleyin. Son olarak, ikinci ürünün fiyatını yeni fiyatla tekrar ekleyerek 15.99 olarak güncelleyin. Tüm bilgileri aşağıda gösterilen tam formatta yazdırın.
.clone() üzerine not: Bir String değişkenini HashMap'e anahtar olarak eklerken, Rust'ın sahiplik (ownership) kuralları gereği değişken map'e taşınır (moved) ve sonrasında artık kullanılamaz. Değişkeni kullanmaya devam etmek için (örneğin, yazdırmak veya tekrar eklemek için), insert() metoduna geçirirken üzerinde .clone() metodunu çağırın. Örneğin: map.insert(name.clone(), price).
Gereksinimler:
std::collectionsiçerisindenHashMapyapısını içe aktarınHashMap<String, f64>türlerinde değiştirilebilir bir hash map oluşturun- İlk girdiyi ilk ürün adı olarak okuyun
- İkinci girdiyi okuyun ve ilk ürünün fiyatı için
f64türüne dönüştürün - İlk ürünü ve fiyatını, ürün adı üzerinde
.clone()kullanarak hash map'e ekleyin - Üçüncü girdiyi ikinci ürün adı olarak okuyun
- İkinci ürünü
0.0fiyatıyla, ürün adı üzerinde.clone()kullanarak ekleyin - İkinci ürünü
15.99fiyatıyla,.clone()kullanarak tekrar ekleyin (bu işlem önceki değerin üzerine yazacaktır) - Her iki ürün için bilgileri aşağıda gösterilen tam formatta yazdırın
Girdi:
- İlk satır: İlk ürün adı (örneğin,
Laptop) - İkinci satır: Ondalık sayı olarak ilk ürünün fiyatı (örneğin,
999.99) - Üçüncü satır: İkinci ürün adı (örneğin,
Mouse)
Çıktı:
- İlk satır:
Inserted [first_product] at $[price] - İkinci satır:
Inserted [second_product] at $0.00 - Üçüncü satır:
Updated [second_product] to $15.99
Kopya kağıdı
Bir hash map'e anahtar-değer çiftleri eklemek için .insert() metodunu kullanın:
let mut capitals = HashMap::new();
capitals.insert("France", "Paris");
capitals.insert("Japan", "Tokyo");.insert() metodu iki parametre alır: anahtar ve değer.
Zaten var olan bir anahtarı eklerseniz, yeni değer eskisinin üzerine yazılacaktır:
capitals.insert("France", "Lyon"); // Bu, "Paris" değerinin üzerine yazarBu üzerine yazma davranışı, .insert() metodunu hem yeni girişler eklemek hem de mevcut olanları güncellemek için kullanışlı kılar.
Kendin dene
use std::collections::HashMap;
use std::io;
fn main() {
// Girdileri oku
let mut product1 = String::new();
io::stdin().read_line(&mut product1).expect("Failed to read line");
let product1 = product1.trim().to_string();
let mut price1_input = String::new();
io::stdin().read_line(&mut price1_input).expect("Failed to read line");
let price1: f64 = price1_input.trim().parse().expect("Failed to parse price");
let mut product2 = String::new();
io::stdin().read_line(&mut product2).expect("Failed to read line");
let product2 = product2.trim().to_string();
// YAPILACAK: Kodunuzu aşağıya yazın
// Değiştirilebilir bir HashMap oluşturun, ürünleri ekleyin ve istenen çıktıyı yazdırın
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Logic & Flow bölümündeki tüm dersler
1İleri Seviye Kontrol Akışı
'match' İfadesiBirden Çok Değeri EşleştirmeAralıkları Eşleştirme'if let' İfadesiİfade Olarak DöngülerÖzet - Basit Komut Ayrıştırıcı4Struct'lar ile Verileri Gruplama
Struct Nedir?Struct'lara Genel BakışStruct Alanlarına ErişmeMutable Struct'larFonksiyon Parametresi Olarak Struct'larTuple Struct'larÖzet - Bir Kitap Struct'ı Oluşturun7'Result' ile Hata Yönetimi
'Result' Nedir?'Result' ile 'match' Kullanımıis_ok() ve is_err()Kısayollar: unwrap ve expectSoru İşareti Operatörü '?'String'leri Sayılara DönüştürmeÖzet - Güvenli Bölme Fonksiyonu10Closures ve Anonim Fonksiyonlar
Closure Nedir?Basit Bir Closure TanımlamaParametreli Closure'larOrtamı YakalamakÖzet - Basit Toplayıcı Closure2Vektörlere Giriş
Vektör Nedir?Vektör Oluşturmapush ile Eleman EklemeVektör Elemanlarına ErişmeVektör Üzerinde YinelemeDeğiştirilebilir YinelemeEleman KaldırmaÖzet - Temel Skor Takipçisi5Hash Map'ler ile Anahtar-Değer Çiftleri
Hash Map Nedir?Bir Hash Map OluşturmaAnahtar-Değer Çiftleri EklemeDeğerlere ErişmeBir Hash Map Üzerinde GezinmeBir Değeri GüncellemeBir Çifti KaldırmaÖzet - Kelime Sayacı11Son Meydan Okumalar
Özet - Benzersiz ÖğelerÖzet - Kullanıcı Profili DoğrulayıcıÖzet - Not Özetleyici3Komut Satırı Yapılacaklar Listesi
Proje KurulumuGörev EklemeTüm Görevleri GörüntülemeGörev SilmeFinal Kodu6'Option' ile Yokluğu Yönetme
'Option' Nedir?'Option' ile 'match' Kullanımıis_some() ve is_none()Bir 'Option' Değerini Açmak (Unwrapping)expect MetoduVarsayılan Değer Sağlama: unwrap_orÖzet - Bir Eleman Bulma9String Dilimleri ve Daha Fazlası
String ve &strString Dilimleri OluşturmaFonksiyon Parametresi Olarak DilimlerDiğer DilimlerÖzet - İlk Kelimeyi Bulma