CodeBlanks Logo Icon CodeBlanks

Range türleri

Range ve RangeInclusive türlerini öğrenirsin.

Range türleri

1..4 bir Range<i32>, 1..=4 bir RangeInclusive<i32> değeridir. Aralıklar dilimlemenin yanında döngülerde ve yineleyici olarak da kullanılır:

let r = 1..=5;
println!("{}", r.contains(&5));          // true
for i in (1..4).rev() { print!("{i} "); }  // 3 2 1
let tek: Vec<i32> = (1..10).step_by(2).collect();   // [1, 3, 5, 7, 9]

Karakter ve boş aralıklar

Aralıklar karakterlerle de çalışır: ('a'..='e').collect::<String>() → "abcde". Başlangıç bitişe eşit ya da büyükse aralık boştur: (5..5).count() 0, (5..1).count() de 0 verir; geriye saymak için rev() gerekir.

let harfler: String = ('a'..='e').collect();
println!("{harfler} {}", (5..1).count());   // abcde 0

Uygulama Aralık işlemleri

(1..=10).step_by(3) elemanlarının toplamını (sum::<i32>()) ve (1..5).rev() ile oluşan vektörü (collect::<Vec<i32>>()) tek satırda yazdır.

Başlangıç kodu

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

Örnek çözüm

main.rs
fn main() {
    let t: i32 = (1..=10).step_by(3).sum();
    let v: Vec<i32> = (1..5).rev().collect();
    println!("{} {:?}", t, v);
}

Beklenen çıktı

22 [4, 3, 2, 1]

Soru ve cevaplar

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

1 <code>(0..10).step_by(4).collect::&lt;Vec&lt;_&gt;&gt;()</code> nedir?

  • [0, 4, 8, 12]
  • [0, 4]
  • [0, 4, 8] Doğru cevap
  • [4, 8]

Açıklama: step_by ilk elemandan başlar ve 4'er atlar; 10 dahil değildir.

2 Geriye say

Soru
for i in (1..=3).____() {
    print!("{i} ");   // 3 2 1
}
Cevap
for i in (1..=3).rev() {
    print!("{i} ");   // 3 2 1
}

Açıklama: rev yineleyiciyi tersten dolaşır.

3 Aralık ve eleman sayısı

Kavram Anlamı
1..4 3
1..=4 4
5..5 0
(0..10).step_by(4) 3 eleman

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