Sayı karşılaştırma
- Rust kursu
- Başlangıç
- Ders 62/115
- 6 dk
parse ile tahmini sayıya çevirip Ordering ile karşılaştırırsın.
Sayıya çevirme
Metni sayıya çevirmek için parse kullanılır; hedef tür belirtilmelidir. Sonuç bir Result'tır çünkü "abc" gibi metinler çevrilemez:
let tahmin: u32 = tahmin.trim().parse().expect("Bir sayı yaz!");Burada eski tahmin (String) aynı adla yeni bir u32 ile gölgelenir (shadowing); ayrı bir ad uydurmaya gerek kalmaz.
cmp ve Ordering
a.cmp(&b), std::cmp::Ordering türünden üç değerden birini döndürür: Less, Greater, Equal. match üçünü de ele almayı zorunlu kılar:
use std::cmp::Ordering;
match tahmin.cmp(&gizli) {
Ordering::Less => println!("Çok küçük"),
Ordering::Greater => println!("Çok büyük"),
Ordering::Equal => println!("Bildin!"),
}Bir kolu unutursan derleyici "non-exhaustive patterns" hatası verir.
Uygulama İlk karşılaştırma
let gizli: u32 = 42; ve "30" metnini parse::<u32>() ile çevirip (unwrap) cmp ile karşılaştır. Less için 30: Çok küçük, Greater için Çok büyük, Equal için Bildin! yazdır.
Başlangıç kodu
use std::cmp::Ordering;
fn main() {
// buraya yaz
}Örnek çözüm
use std::cmp::Ordering;
fn main() {
let gizli: u32 = 42;
let tahmin: u32 = "30".parse().unwrap();
match tahmin.cmp(&gizli) {
Ordering::Less => println!("{}: Çok küçük", tahmin),
Ordering::Greater => println!("{}: Çok büyük", tahmin),
Ordering::Equal => println!("{}: Bildin!", tahmin),
}
}Beklenen çıktı
30: Çok küçük
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>"-5".parse::<u32>()</code> ne döndürür?
- Err(...) Doğru cevap
- Ok(5)
- Ok(-5)
- Panic
Açıklama: u32 işaretsizdir; eksi işareti geçersiz bir rakamdır ve Err döner.
2 Karşılaştır
match tahmin.____(&gizli) {
Ordering::Less => println!("Çok küçük"),
Ordering::Greater => println!("Çok büyük"),
Ordering::Equal => println!("Bildin!"),
}
match tahmin.cmp(&gizli) {
Ordering::Less => println!("Çok küçük"),
Ordering::Greater => println!("Çok büyük"),
Ordering::Equal => println!("Bildin!"),
}
Açıklama: cmp bir Ordering değeri döndürür.
3 cmp sonucu
| Kavram | Anlamı |
|---|---|
3.cmp(&5) |
Less |
5.cmp(&3) |
Greater |
5.cmp(&5) |
Equal |
"x".parse::<u32>() |
Err |