CodeBlanks Logo Icon CodeBlanks

next metodu

next ile elemanları tek tek tüketirsin.

next metodu

next elle de çağrılabilir. Yineleyici değişkeni mut olmalıdır, çünkü her çağrı onu ilerletir; tükenmiş bir yineleyici None vermeye devam eder:

let v = vec!["a", "b"];
let mut it = v.iter();
println!("{:?}", it.next());   // Some("a")
println!("{:?}", it.next());   // Some("b")
println!("{:?}", it.next());   // None

for döngüsü arka planda tam olarak bunu yapar: None gelene kadar next çağırır.

Tüketen yöntemler

Bazı yöntemler next'i sonuna kadar çağırarak yineleyiciyi tüketir ve bir sonuç üretir: sum, count, collect, last, max. Tükenen yineleyici bir daha kullanılamaz (taşınmıştır):

let it = vec![1, 2, 3].into_iter();
let toplam: i32 = it.sum();
// it.count();   // hata: it, sum içinde taşındı
println!("{toplam}");   // 6

nth(n) ve find ise yineleyiciyi yalnızca gerektiği kadar ilerletir.

Uygulama Elle ilerletme

let v = vec!["a", "b"]; için let mut it = v.iter(); oluştur ve next()'i üç kez çağırıp sonuçları {:?} ile tek satırda yazdır.

Başlangıç kodu

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

Örnek çözüm

main.rs
fn main() {
    let v = vec!["a", "b"];
    let mut it = v.iter();
    let a = it.next();
    let b = it.next();
    let c = it.next();
    println!("{:?} {:?} {:?}", a, b, c);
}

Beklenen çıktı

Some("a") Some("b") None

Soru ve cevaplar

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

1 <code>iter()</code>, <code>iter_mut()</code> ve <code>into_iter()</code> sırasıyla ne üretir?

  • &T, &T, &T
  • T, &mut T, &T
  • &T, &mut T, T Doğru cevap
  • T, T, T

Açıklama: into_iter koleksiyonu tüketir ve elemanların sahipliğini verir.

2 İlerlet

Soru
let mut it = v.iter();
let ilk = it.____();
Cevap
let mut it = v.iter();
let ilk = it.next();

Açıklama: next yineleyiciyi bir adım ilerletir ve elemanı Option içinde verir.

3 Yöntem ve [1, 2, 3] sonucu

Kavram Anlamı
.iter().count() 3
.iter().last() Some(3)
.iter().nth(1) Some(2)
.iter().nth(5) None

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