CodeBlanks Logo Icon CodeBlanks

Özet - Dilimler

String ve dizi dilimlerini birleştirerek ilk kelimeyi bulan fonksiyon yazarsın.

Dilimler özeti

Dilim, ardışık verinin ödünç alınmış görünümüdür: &str metin için, &[T] dizi ve vektör için. Aralıklar a..b (b hariç), a..=b (dahil), ..b, a.., .. biçimindedir. String indeksleri bayt konumudur; karakter sınırı dışında panic olur, güvenli seçenek get'tir. Fonksiyon parametrelerinde dilim almak en esnek seçimdir.

Ne zaman ne seçilir?

Veriyi yalnızca okuyorsan dilim al; dönüşte girdinin bir parçasını veriyorsan dilim döndür. Yeni veri ürettiysen (birleştirme, büyük harfe çevirme) sahip olunan tür döndür: String ya da Vec<T>. Dilim kaynağından uzun yaşayamayacağı için yerel bir değişkenin dilimini döndürmek derleme hatasıdır.

Uygulama Son n eleman

fn son_n(v: &[i32], n: usize) -> &[i32] yaz; &v[v.len() - n..] döndürsün. [1, 2, 3, 4, 5] ve n = 2 için sonucu {:?} ile yazdır.

Başlangıç kodu

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

Örnek çözüm

main.rs
fn son_n(v: &[i32], n: usize) -> &[i32] {
    &v[v.len() - n..]
}

fn main() {
    let a = [1, 2, 3, 4, 5];
    println!("{:?}", son_n(&a, 2));
}

Beklenen çıktı

[4, 5]

Soru ve cevaplar

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

1 <code>let v = [1, 2, 3, 4]; let s = &amp;v[1..3];</code> için <code>s.len()</code> nedir?

  • 1
  • 2 Doğru cevap
  • 3
  • 4

Açıklama: 1..3 aralığı 1 ve 2 indekslerini kapsar: [2, 3].

2 Güvenli dilim

Soru
let s = "abc";
let x = s.____(1..5);   // None
Cevap
let s = "abc";
let x = s.get(1..5);   // None

Açıklama: get sınır dışı aralıkta panic yerine None döndürür.

3 Tür ve anlamı

Kavram Anlamı
&str Metin dilimi
&[T] Eleman dilimi
&mut [T] Değiştirilebilir dilim
RangeInclusive a..=b

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