Özet - Ömürler
- Rust kursu
- Orta seviye
- Ders 18/115
- 5 dk
Ö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
fn main() {
// buraya yaz
}Örnek çözüm
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
metin.split_whitespace().____(|k| k.chars().count())
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 |