Anahtar-Değer Çiftleri Ekleme
Coddy'nin Rust Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 29 / 66.
Artık boş bir hash map'iniz olduğuna göre, ona bazı veriler eklemenin zamanı geldi. .insert() yöntemini 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 ve değer. Bu örnekte ülke adlarını anahtar, başkentlerini ise değer olarak saklıyoruz.
Hatırlaman gereken önemli bir davranış şudur: karma tabloda zaten var olan bir anahtar eklersen, yeni değer eskisinin üzerine yazılır:
capitals.insert("France", "Lyon"); // Bu "Paris"i üzerine yazarBu işlemden sonra, "France" araması "Paris" yerine "Lyon" döndürür. Bu üzerine yazma davranışı, .insert() yöntemini hash map'inize hem yeni girdiler eklemek hem de mevcut girdileri güncellemek için kullanışlı kılar.
Görev
KolayÜç girdi alacaksın: bir ürün adı, fiyatı (ondalık sayı olarak) ve başka bir ürün adı. Ürün adlarını anahtar (tür String) ve fiyatlarını değer (tür f64) olarak depolamak için değiştirilebilir bir hash map oluştur. İlk ürünü fiyatıyla birlikte hash map'e ekle. Ardından ikinci ürünü 0.0 fiyatıyla ekle. Son olarak, yeni fiyatla tekrar ekleyerek ikinci ürünün fiyatını 15.99 olarak güncelle. Aşağıda gösterilen tam biçimde tüm bilgileri yazdır.
.clone() hakkında not: Bir String değişkenini HashMap'e anahtar olarak eklerken Rust'ın sahiplik kuralları, değişkenin map'e taşınacağı ve sonrasında artık kullanılamayacağı anlamına gelir. Değişkeni kullanmaya devam etmek (örneğin yazdırmak veya tekrar eklemek) için insert()'e geçirirken üzerinde .clone() çağır. Örneğin: map.insert(name.clone(), price).
Gereksinimler:
HashMap'istd::collections'den içe aktarHashMap<String, f64>türleriyle değiştirilebilir bir hash map oluştur- İlk girdiyi ilk ürün adı olarak oku
- İkinci girdiyi oku ve ilk ürünün fiyatı için
f64'e dönüştür - Ürün adı üzerinde
.clone()kullanarak ilk ürünü ve fiyatını hash map'e ekle - Üçüncü girdiyi ikinci ürün adı olarak oku
- Ürün adı üzerinde
.clone()kullanarak ikinci ürünü0.0fiyatıyla ekle - İkinci ürünü
.clone()kullanarak15.99fiyatıyla tekrar ekle (bu, önceki değerin üzerine yazacaktır) - Her iki ürünün bilgilerini aşağıda gösterilen tam biçimde yazdır
Girdi:
- İlk satır: İlk ürün adı (ör.
Laptop) - İkinci satır: İlk ürünün ondalık sayı olarak fiyatı (ör.
999.99) - Üçüncü satır: İkinci ürün adı (ör.
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
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();
// TODO: Kodunuzu aşağıya yazın
// Değiştirilebilir bir HashMap oluşturun, ürünleri ekleyin ve gerekli çıktıyı yazdırın
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış 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 BulmaKendi başına pratik yap: Online Rust derleyicisi