Menu
Coddy logo textTech

Döngü İçinde Ödünç Alma

Coddy'nin Rust Journey'sinin Fundamentals bölümünün bir parçası — ders 67 / 75.

Rust'ta bir döngü yazdığımızda, verilerimizle çalışmak için iki ana yolumuz vardır: ona bakabiliriz (& kullanarak) veya onu alabiliriz. Örneğin şu verileri ele alalım:

let numbers = vec![1, 2, 3, 4, 5];
let mut sum = 0;

Yöntem 1: Veriye bakmak (& kullanarak):

for number in &numbers {
    sum += number;
}
println!("I can use it here: {:?}", numbers);

Yöntem 2: Veriyi alma (& olmadan):

for number in numbers {
    sum += number;
}
// println!("Can't use {:?} anymore!", numbers);
// Bu bir hataya neden olur

Şöyle düşünün:

  1. & kullanmak bir fotoğraf albümüne bakmak gibidir: tüm fotoğrafları görebilirsiniz ancak albüm bozulmadan kalır
  1. & kullanmamak, fotoğrafları çıkarmak gibidir: onları kullanabilirsiniz, ancak sonrasında albüm boş kalacaktır

Şimdi bu stil:

for num in numbers.iter() {}

Şuna benzer:

for num in &numbers {}

Ve bir mutasyon döngüsü:

for num in numbers.iter_mut() { 
    *num *= 2;
}

Şu şekilde de yazılabilir:

for num in &mut numbers { 
    *num *= 2;
}

Kopya kağıdı

Rust döngülerinde, verilere bakabilir (& kullanarak) veya onların sahipliğini alabilirsiniz:

Verilere bakmak (ödünç alma):

let numbers = vec![1, 2, 3, 4, 5];
for number in &numbers {
    sum += number;
}
// numbers döngüden sonra hala kullanılabilir

Sahipliği almak:

let numbers = vec![1, 2, 3, 4, 5];
for number in numbers {
    sum += number;
}
// numbers döngüden sonra kullanılamaz

Yineleyici (Iterator) metotları:

// Bunlar eşdeğerdir:
for num in numbers.iter() {}
for num in &numbers {}

// Değişiklik (mutation) için:
for num in numbers.iter_mut() { *num *= 2; }
for num in &mut numbers { *num *= 2; }

Kendin dene

Bu ders bir kod alıştırması içermiyor.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Fundamentals bölümündeki tüm dersler