CodeBlanks Logo Icon CodeBlanks

Dizi dilimleri

&[T] ile bir dizinin veya vektörün bir bölümünü dilimlersin.

Dizi dilimleri

Diziler ve vektörler de dilimlenebilir; sonuç &[T] türündedir:

let a = [10, 20, 30, 40, 50];
let orta: &[i32] = &a[1..4];
println!("{:?} {}", orta, orta.len());   // [20, 30, 40] 3

let v = vec![1, 2, 3];
let hepsi: &[i32] = &v;                 // &Vec<i32> → &[i32]

Dilim; uzunluğunu bilir, iter, contains, first, last gibi yöntemleri vardır.

Değiştirilebilir dilim

&mut v[a..b] bir &mut [T] verir; dilim üzerinden elemanlar değiştirilebilir ama uzunluk değişmez (push yoktur):

let mut v = vec![1, 2, 3, 4];
let d = &mut v[1..3];
d[0] = 20;
d.reverse();
println!("{:?}", v);   // [1, 3, 20, 4]

sort, reverse, swap, fill dilim yöntemleridir.

Uygulama Orta bölüm

let v = vec![3, 1, 4, 1, 5, 9]; için &v[2..5] dilimini al. Dilimi ve elemanlarının toplamını (iter().sum::<i32>()) yazdır.

Başlangıç kodu

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

Örnek çözüm

main.rs
fn main() {
    let v = vec![3, 1, 4, 1, 5, 9];
    let orta = &v[2..5];
    let t: i32 = orta.iter().sum();
    println!("{:?} {}", orta, t);
}

Beklenen çıktı

[4, 1, 5] 10

Soru ve cevaplar

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

1 <code>let v = vec![5, 6, 7]; let d = &amp;v[1..];</code> için <code>d.first()</code> nedir?

  • Some(&6) Doğru cevap
  • Some(&5)
  • 6
  • None

Açıklama: Dilim 1. indeksten başlar; first ilk elemana referansı Option içinde verir.

2 Ortadaki üç

Soru
let a = [10, 20, 30, 40, 50];
let orta = &a[____];   // [20, 30, 40]
Cevap
let a = [10, 20, 30, 40, 50];
let orta = &a[1..4];   // [20, 30, 40]

Açıklama: 1..4 aralığı 1, 2 ve 3 indekslerini alır.

3 Yöntem ve sonuç ([4, 1, 5] üzerinde)

Kavram Anlamı
len() 3
first() Some(&4)
last() Some(&5)
contains(&1) true

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma