Menu
Coddy logo textTech

Değerlere Erişme

Coddy'nin Rust Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 30 / 66.

Hash map'inizde veriler depolandığında, onları almak için bir yönteme ihtiyacınız olacaktır. .get() yöntemi, anahtarını kullanarak bir değeri aramanızı sağlar:

let value = my_map.get("some_key");

Ancak anlaşılması gereken önemli bir ayrıntı var: .get() doğrudan değeri döndürmez. Bunun yerine, “bir şey” veya “hiçbir şey”i temsil eden yerleşik bir Rust türü olan Option türünü döndürür. Bunun nedeni, aradığınız anahtarın hash map içinde bulunmayabilmesidir.

Anahtar mevcut olduğunda .get(), Some(&value) döndürür — değerinin kendisini değil, değere bir başvuru aldığınız anlamına gelen & sembolüne dikkat edin. Anahtar mevcut olmadığında ise None döndürür:

match capitals.get("France") {
    Some(capital) => println!("The capital is {}", capital),
    None => println!("Country not found"),
}

Eşleşme kolunun açıkça bir & kullanmadan Some(capital) kullandığını fark edebilirsiniz. Bunun nedeni, Rust’ın bu bağlamda başvuruyu sizin için otomatik olarak işlemesidir: capital hâlâ değere bir başvuru tutar, ancak kalıpta & işlecini açıkça yazmanız gerekmez. Rust’ın kalıp eşleştirmesi, örneğin yazdırırken capital öğesini doğrudan kullanmanıza izin verecek kadar akıllıdır.

Bu tasarım, var olmayan bir anahtara erişmeye çalıştığınızda programınızın çökmesini önler. Rust, bir hataya neden olmak yerine sizi her iki olasılığı da ele almaya zorlar: değeri bulmak veya bulamamak. Böylece kodunuz daha sağlam ve öngörülebilir olur.

challenge icon

Görev

Kolay

İki girdi alacaksın: bir ülke adı ve bir başkent adı. Ülke adlarını anahtar (tür String), başkent adlarını ise değer (tür String) olarak depolayan bir hash map oluştur. Ülkeyi ve başkentini hash map'e ekle. Ardından, aramak üzere başka bir ülke adı içeren üçüncü bir girdi alacaksın. Bu ülkenin başkentini almak için .get() metodunu kullan ve her iki durumu da ele al: ülkenin map'te bulunduğu ve bulunmadığı durumlar.

Not: .get(), anahtar mevcut olduğunda Some(&value) (değere bir referans), mevcut olmadığında ise None olmak üzere bir Option döndürür. Bir match kolunda Some(capital) yazabilirsin; Rust referansı senin için otomatik olarak ele alır, böylece yazdırma ifaden içinde capital değerini doğrudan kullanabilirsin.

Gereksinimler:

  • HashMap'i std::collections üzerinden içe aktar
  • HashMap<String, String> türlerine sahip değiştirilebilir bir hash map oluştur
  • İlk girdiyi ülke adı olarak oku
  • İkinci girdiyi başkent adı olarak oku
  • Ülkeyi ve başkenti hash map'e ekle
  • Üçüncü girdiyi aranacak ülke olarak oku
  • Aranan ülkenin başkentini almak için .get() kullan
  • .get() tarafından döndürülen Option'ı ele almak için match kullan
  • Ülke bulunursa şunu yazdır: The capital of [country] is [capital]
  • Ülke bulunamazsa şunu yazdır: [country] not found in the map

Girdi:

  • İlk satır: Eklenecek ülke adı (ör. France)
  • İkinci satır: Başkent adı (ör. Paris)
  • Üçüncü satır: Aranacak ülke adı (ör. France veya Germany)

Çıktı:

  • Aranan ülke mevcutsa: The capital of [country] is [capital]
  • Aranan ülke mevcut değilse: [country] not found in the map

Kendin dene

use std::collections::HashMap;
use std::io;

fn main() {
    // Eklenecek ülke adını oku
    let mut country = String::new();
    io::stdin().read_line(&mut country).expect("Failed to read line");
    let country = country.trim().to_string();
    
    // Başkent adını oku
    let mut capital = String::new();
    io::stdin().read_line(&mut capital).expect("Failed to read line");
    let capital = capital.trim().to_string();
    
    // Aranacak ülke adını oku
    let mut lookup_country = String::new();
    io::stdin().read_line(&mut lookup_country).expect("Failed to read line");
    let lookup_country = lookup_country.trim().to_string();
    
    // TODO: Kodunuzu aşağıya yazın
    // Bir HashMap oluşturun, ülkeyi ve başkenti ekleyin, ardından ülkeyi arayın
    
}
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 & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Rust derleyicisi