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.
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
yesise,Some(product_name.to_string())atayın - Eğer stok durumu
noise,Noneatayın
- Eğer stok durumu
- Ü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:
yesveyano
Çıktı:
- Eğer stok durumu
yesise:Product available: [product_name] - Eğer stok durumu
noise: 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
Someiçeriyorsa, içindeki değeri döndürür - Eğer
Noneiç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]
}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