CodeBlanks Logo Icon CodeBlanks

Özet - Ömürler

Ömür parametreleriyle en uzun metni döndüren fonksiyon yazarsın.

Ömürler özeti

Ömür, bir referansın geçerli olduğu bölgedir; derleyici referansın değerden uzun yaşamadığını denetler. Çoğu durumda üç elision kuralı ömürleri çıkarır. Birden çok referans girip bir referans çıkıyorsa <'a> ile ilişki açıkça yazılır. Referans tutan struct'lar struct S<'a> biçimindedir. 'static programın sonuna kadar geçerlidir. Ömür sorunlarında sık çözüm, sahip olunan bir değer döndürmektir.

Metinden parça döndürmek

Tek bir referans parametresi olduğu için aşağıdaki fonksiyonda ömür yazmak gerekmez; ama açıkça yazmak da serbesttir ve ilişkiyi belgeleyerek okunabilirliği artırır:

fn en_uzun_kelime<'a>(metin: &'a str) -> &'a str {
    metin
        .split_whitespace()
        .max_by_key(|k| k.chars().count())
        .unwrap_or("")
}

Dönen kelime, kaynağın bir dilimidir; kopya yapılmaz.

Uygulama En uzun kelime

Yukarıdaki en_uzun_kelime fonksiyonunu yaz. "Rust güvenli ve hızlı bir dildir" için sonucu yazdır.

Başlangıç kodu

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
fn en_uzun_kelime<'a>(metin: &'a str) -> &'a str {
    metin
        .split_whitespace()
        .max_by_key(|k| k.chars().count())
        .unwrap_or("")
}

fn main() {
    println!("{}", en_uzun_kelime("Rust güvenli ve hızlı bir dildir"));
}

Beklenen çıktı

güvenli

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>max_by_key</code> eşit anahtarlı elemanlarda hangisini döndürür?

  • None
  • Sonuncusunu Doğru cevap
  • İlkini
  • Rastgele birini

Açıklama: Belgelere göre max_by_key eşitlikte son elemanı, min_by_key ilk elemanı döndürür.

2 Anahtara göre en büyük

Soru
metin.split_whitespace().____(|k| k.chars().count())
Cevap
metin.split_whitespace().max_by_key(|k| k.chars().count())

Açıklama: max_by_key, verilen fonksiyonun sonucuna göre en büyük elemanı bulur.

3 Grubun özeti

Kavram Anlamı
'a Ömür parametresi
'static Program boyu
Elision Otomatik çıkarım
S<'a> Referans tutan struct

Orta seviye bölümündeki tüm dersler