Menu
Coddy logo textTech

expect Metodu

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

.unwrap() işini görse de büyük bir dezavantajı vardır: bir None üzerinde paniklediğinde, hata mesajı geneldir ve yardımcı olmaz. İşte burada .expect() imdada yetişir.

.expect() metodu tam olarak .unwrap() gibi çalışır - bir Some içinden değeri çıkarır ve bir None durumunda panikler. Temel fark, .expect() metodunun özel bir panik mesajı sağlamanıza izin vermesidir:

let maybe_score = Some(95);
let score = maybe_score.expect("Score should always be present");
println!("Your score is: {}", score);

Eğer Option bir Some içeriyorsa, .expect() tıpkı .unwrap() gibi içindeki değeri döndürür. Ancak eğer bir None ise, genel bir panik mesajı yerine kendi özel mesajınızı görürsünüz; bu da neyin nerede yanlış gittiğini anlamayı çok daha kolaylaştırır.

challenge icon

Görev

Kolay

İki girdi alacaksınız. İlk girdi bir ürün adıdır ve ikinci girdi ürünün stokta olup olmadığını (yes) veya stokta olmadığını (no) belirtir. Ürün stoktaysa Some(product_name), stokta değilse None içeren bir Option<String> oluşturun. Ürün adını çıkarmak ve yazdırmak için açıklayıcı bir mesajla .expect() kullanın.

Gereksinimler:

  • İlk girdiyi (ürün adı) okuyun ve boşlukları kırpın
  • İkinci girdiyi (stok durumu) okuyun ve boşlukları kırpın
  • Bir Option<String> değişkeni oluşturun:
    • Stok durumu yes ise Some(product_name.to_string()) atayın
    • Stok durumu no ise None atayın
  • Ürün adını çıkarmak için "Product should be in stock" mesajıyla .expect() kullanın
  • Çıkarılan ürün adını şu biçimde yazdırın: Product available: [product_name]

Girdi:

  • İlk satır: Bir ürün adı (ör. Laptop)
  • İkinci satır: yes veya no

Çıktı:

  • Stok durumu yes ise: Product available: [product_name]
  • Stok durumu no ise: Program özel "Product should be in stock" mesajıyla panic oluşturur (bu, bu görev için beklenen davranıştır)

Not: Stok durumu no olduğunda, None üzerinde .expect() çağrılması özel mesajınızla bir panic oluşmasına neden olur. Bu, .expect() yönteminin .unwrap() yöntemine kıyasla nasıl daha yararlı hata bilgileri sağladığını gösterir.

Kendin dene

use std::io;

fn main() {
    // Ürün adını oku
    let mut product_name = String::new();
    io::stdin().read_line(&mut product_name).expect("Failed to read line");
    let product_name = product_name.trim();
    
    // Stok durumunu oku
    let mut stock_status = String::new();
    io::stdin().read_line(&mut stock_status).expect("Failed to read line");
    let stock_status = stock_status.trim();
    
    // TODO: Kodunuzu aşağıya yazın
    // stock_status'e dayalı bir Option<String> oluşturun
    // Ürün adını çıkarmak için .expect() kullanın
    // Sonucu şu formatta yazdırın: Product available: [product_name]
    
}
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