0Pricing
Learn Rust Coding · Ders

map, filter, collect

Dizileri dönüştürün

map, filter, collect, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.

Dizileri Dönüştürme

Yineleyici işlem hatlarındaki işlerin çoğunu üç yöntem yapar: map her öğeyi dönüştürür, filter bazı öğeleri tutar ve collect sonuçları bir koleksiyonda toplar.

Bu yöntemler birlikte, birçok elle yazılmış döngünün yerini kısa ve okunabilir zincirlerle doldurur.

map: Bir Girdi, Bir Çıktı

map, her öğeye bir kapanış uygular ve dönüştürülmüş değeri üretir. Öğe sayısı aynı kalır; yalnızca değerleri değişir.

Tembel olduğu için kapanış yalnızca yineleyici tüketildiğinde çalışır.

fn main() {
    let nums = vec![1, 2, 3];
    let doubled: Vec<i32> = nums.iter().map(|x| x * 2).collect();
    println!("{:?}", doubled);
}

map Türü Değiştirebilir

map yönteminin çıktı türünün girdi türüyle aynı olması gerekmez. Burada sayıları dizelere dönüştürüyoruz.

Bu özellik, map yöntemini verileri bir biçimden başka bir biçime dönüştürmek için ideal hâle getirir.

fn main() {
    let nums = vec![1, 2, 3];
    let labels: Vec<String> = nums.iter().map(|x| format!("n{}", x)).collect();
    println!("{:?}", labels);
}

filter: İstediklerinizi Tutun

filter, bool döndüren bir kapanış alır. Kapanışın true döndürdüğü öğeler tutulur; diğerleri atılır.

Kapanış bir başvuru alır; bu nedenle çoğu zaman * ile başvuruyu kaldırır veya kalıp eşleştirme kullanırsınız.

fn main() {
    let nums = vec![1, 2, 3, 4, 5, 6];
    let evens: Vec<i32> = nums.into_iter().filter(|x| x % 2 == 0).collect();
    println!("{:?}", evens);
}

map ve filter'ı Zincirleme

Bağdaştırıcıları serbestçe zincirleyebilirsiniz. Sıra önemlidir: Her öğe zincir boyunca yukarıdan aşağıya ilerler.

Burada çift sayıları tutuyor, ardından kalan sayıların karesini alıyoruz.

fn main() {
    let result: Vec<i32> = (1..=6)
        .filter(|x| x % 2 == 0)
        .map(|x| x * x)
        .collect();
    println!("{:?}", result);
}

collect ile Bir Vec Oluşturma

collect bir yineleyiciyi tüketir ve bir koleksiyon oluşturur. Birçok koleksiyon türü mümkün olduğundan, genellikle hedef türü belirtirsiniz.

collect::<Vec<_>>() turbobalık sözdizimi, değişkeni tür belirtimiyle tanımlamaya alternatiftir.

fn main() {
    let squares = (1..=4).map(|x| x * x).collect::<Vec<i32>>();
    println!("{:?}", squares);
}

collect ile Bir String Oluşturma

collect yalnızca vektörlerle sınırlı değildir. char yineleyicisi bir String içinde toplanabilir.

Rust, öğelerin nasıl birleştirileceğine karar vermek için hedef türü kullanır.

fn main() {
    let shouted: String = "hello".chars().map(|c| c.to_ascii_uppercase()).collect();
    println!("{}", shouted);
}

collect ile Bir HashMap Oluşturma

Anahtar-değer demetlerinden oluşan bir yineleyici, bir HashMap içinde toplanabilir. Öğeleri zip ile eşleştirin veya bir map içinde demetler oluşturun.

Bu, iki paralel diziden arama tabloları oluşturmanın temiz bir yoludur.

use std::collections::HashMap;

fn main() {
    let map: HashMap<i32, i32> = (1..=3).map(|x| (x, x * x)).collect();
    println!("{:?}", map.get(&2));
}

Üçünü Birlikte Kullanma

Tipik bir işlem hattı bir cümle gibi okunur: Öğeleri al, filtrele, dönüştür ve topla.

Burada üç harften uzun words öğelerini tutuyor ve onları büyük harfe dönüştürüyoruz.

fn main() {
    let words = vec!["hi", "rust", "go", "code"];
    let kept: Vec<String> = words
        .into_iter()
        .filter(|w| w.len() > 3)
        .map(|w| w.to_uppercase())
        .collect();
    println!("{:?}", kept);
}

filter_map: Aynı Anda Filtreleme ve Dönüştürme

filter_map, Option döndüren bir kapanış uygular. Some(v) tutulup açılır; None atılır.

Bu yöntem, bazı inputs öğelerinin geçersiz olabildiği ayrıştırma işlemlerinde özellikle kullanışlıdır.

fn main() {
    let inputs = vec!["1", "two", "3"];
    let nums: Vec<i32> = inputs
        .into_iter()
        .filter_map(|s| s.parse::<i32>().ok())
        .collect();
    println!("{:?}", nums);
}

Bu Kalıp Neden İşe Yarar?

map/filter/collect işlem hatları bildirimseldir: Nasıl döngü kurulacağını değil, ne istediğinizi söyler. Bir eksik ya da fazla sayma hatalarını ve ara değiştirilebilir durumu önlerler.

Ayrıca tembellik sayesinde adımlar arasında geçici vektörler oluşturulmaz.

Hızlı Kontrol

Dizileri dönüştürme hakkında neler bildiğinizi kontrol edin.

Özet

Artık gerçek yineleyici işlem hatları oluşturabilirsiniz:

  • map her öğeyi dönüştürür ve türünü değiştirebilir
  • filter, predicate sonucu true olan öğeleri tutar
  • collect, sonuçları Vec, String, HashMap ve daha fazlasında toplar
  • filter_map, Option kullanarak tek adımda filtreler ve dönüştürür

Sıkça Sorulan Sorular

“map, filter, collect” dersi ücretsiz mi?

Evet — “map, filter, collect” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.

“map, filter, collect” dersinde ne öğreneceğim?

Dizileri dönüştürün Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“map, filter, collect” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Iterator Özelliği
  2. map, filter, collect
  3. Uyarlayıcılar ve Tüketiciler
  4. Özel Yineleyiciler
← Learn Rust Coding Sayfasına Dön