Menu
Coddy logo textTech

expect Metodu

Coddy'nin Rust Journey'sinin Logic & Flow 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ı, ikinci girdi ise ü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 birlikte .expect() kullanın.

Gereksinimler:

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

Girdi:

  • İlk satır: Bir ürün adı (örneğin, Laptop)
  • İkinci satır: yes veya no

Çıktı:

  • Eğer stok durumu yes ise: Product available: [product_name]
  • Eğer stok durumu no ise: Program, "Product should be in stock" özel mesajıyla panikleyecektir (bu, bu görev için beklenen davranıştır)

Not: Stok durumu no olduğunda, None üzerinde .expect() çağırmak özel mesajınızla birlikte bir paniğe neden olur. Bu, .expect() metodunun .unwrap() metoduna kıyasla nasıl daha yardımcı hata bilgisi sağladığını gösterir.

Kopya kağıdı

.expect() yöntemi .unwrap() gibi çalışır ancak daha iyi hata ayıklama için özel bir panik mesajı sağlamanıza olanak tanır.

Bir Option üzerinde çağrıldığında:

  • Eğer Some içeriyorsa, içindeki değeri döndürür
  • Eğer None içeriyorsa, özel mesajınızla panik yapar
let maybe_score = Some(95);
let score = maybe_score.expect("Score should always be present");
println!("Your score is: {}", score);

Özel hata mesajı, neyin yanlış gittiğini ve kodunuzun neresinde olduğunu belirlemeyi kolaylaştırır.

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.

Logic & Flow bölümündeki tüm dersler