Range türleri
- Rust kursu
- Başlangıç
- Ders 58/115
- 4 dk
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 0Uygulama 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
fn main() {
// buraya yaz
}Örnek çözüm
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::<Vec<_>>()</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
for i in (1..=3).____() {
print!("{i} "); // 3 2 1
}
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 |