is_some() ve is_none()
Coddy'nin Rust Journey'sinin Logic & Flow bölümünün bir parçası — ders 37 / 66.
Bazen bir Option türünün, değerini gerçekten çıkarmadan bir değer içerip içermediğini kontrol etmeniz gerekir. Rust bunun için iki kullanışlı yöntem sunar: .is_some() ve .is_none().
Her iki yöntem de bir boolean değer döndürür, bu da onları if koşullarında kullanım için mükemmel kılar:
let maybe_score = Some(85);
if maybe_score.is_some() {
println!("We have a score!");
}
if maybe_score.is_none() {
println!("No score available");
}.is_some() metodu, eğer Option bir Some değeri içeriyorsa true, None ise false döndürür. .is_none() metodu tam tersi şekilde çalışır - None için true ve Some için false döndürür.
Görev
KolayGirdi olarak bir sayı alacaksınız. Eğer sayı pozitifse Some(number) içeren, sayı sıfır veya negatifse None içeren bir Option<i32> oluşturun. Option'ı kontrol etmek için .is_some() ve .is_none() metodlarını kullanın ve uygun mesajı yazdırın.
Gereksinimler:
- Girdiyi okuyun ve
i32türüne dönüştürün - Bir
Option<i32>değişkeni oluşturun:- Eğer sayı pozitifse (0'dan büyükse),
Some(number)atayın - Eğer sayı sıfır veya negatifse,
Noneatayın
- Eğer sayı pozitifse (0'dan büyükse),
Option'ın bir değer içerip içermediğini kontrol etmek için.is_some()kullanın- Eğer
.is_some()değeritruedönerse, şunu yazdırın:Positive number detected Option'ın boş olup olmadığını kontrol etmek için.is_none()kullanın- Eğer
.is_none()değeritruedönerse, şunu yazdırın:No positive number
Girdi:
- Tek bir tam sayı (örneğin,
42,0veya-5)
Çıktı:
- Eğer sayı pozitifse:
Positive number detected - Eğer sayı sıfır veya negatifse:
No positive number
Kopya kağıdı
Bir Option türünün bir değer içerip içermediğini kontrol etmek için .is_some() metodunu kullanın:
let maybe_score = Some(85);
if maybe_score.is_some() {
println!("We have a score!");
}Bir Option türünün boş olup olmadığını kontrol etmek için .is_none() metodunu kullanın:
if maybe_score.is_none() {
println!("No score available");
}Her iki metod da boolean değerler (true veya false) döndürür.
Kendin dene
use std::io;
fn main() {
// Girdiyi oku
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let number: i32 = input.trim().parse().expect("Invalid input");
// TODO: Kodunuzu aşağıya yazın
// Sayının pozitif olup olmadığına bağlı olarak bir Option<i32> oluşturun
// Option'ın Some olup olmadığını kontrol edin ve uygun mesajı yazdırın
}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