Dizi dilimleri
- Rust kursu
- Başlangıç
- Ders 56/115
- 4 dk
&[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
fn main() {
// buraya yaz
}Örnek çözüm
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 = &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 üç
let a = [10, 20, 30, 40, 50];
let orta = &a[____]; // [20, 30, 40]
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 |