Uyarlayıcılar ve Tüketiciler
İşlemleri zincirleme
Uyarlayıcılar ve Tüketiciler, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 3. 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.
İki Tür Yöntem
Yineleyici yöntemleri iki gruba ayrılır:
- Bağdaştırıcılar yeni bir yineleyici döndürür ve tembeldir (
map,filter,take) - Tüketiciler yineleyiciyi çalıştırır ve son bir değer üretir (
sum,collect,for_each)
Her işlem hattı, sıfır veya daha fazla bağdaştırıcının ardından tam olarak bir tüketiciden oluşur.
take: Sayıyı Sınırlama
take(n) en fazla n öğe üretir ve ardından durur. Bir bağdaştırıcı olduğu için tembel kalır.
Sonsuz yineleyicilerde bile çalışır; yalnızca istediğiniz kadar öğe alır.
fn main() {
let first_three: Vec<i32> = (1..).take(3).collect();
println!("{:?}", first_three);
}skip: İlk Öğeleri Yoksayma
skip(n) ilk n öğeyi atar ve geri kalanları üretir. Ortadan bir aralık almak için bunu take ile birleştirin.
fn main() {
let window: Vec<i32> = (1..=10).skip(3).take(4).collect();
println!("{:?}", window);
}enumerate: Dizinle Eşleştirme
enumerate, sıfırdan başlayarak saydığı (index, value) demetlerini üretir. Elle bir sayaç kullanmadan konumları almanın deyimsel yolu budur.
fn main() {
let letters = vec!['a', 'b', 'c'];
for (i, c) in letters.iter().enumerate() {
println!("{} -> {}", i, c);
}
}zip: İki Yineleyicide Birlikte İlerleme
zip, iki yineleyicideki öğeleri eşleştirir. Kısa olan yineleyicide öğeler tükendiğinde durur.
Adlar ve puanlar gibi paralel verileri birleştirmek için kullanışlıdır.
fn main() {
let names = vec!["Ana", "Ben"];
let ages = vec![30, 25];
for (name, age) in names.iter().zip(ages.iter()) {
println!("{} is {}", name, age);
}
}rev: Sırayı Tersine Çevirme
rev, öğeleri sondan başa doğru üretir. Bunun için aralıkların ve dilimlerin sağladığı çift uçlu bir yineleyici gerekir.
fn main() {
let backwards: Vec<i32> = (1..=5).rev().collect();
println!("{:?}", backwards);
}chain: İki Yineleyiciyi Birleştirme
chain, ilk yineleyiciyi tamamlanana kadar çalıştırır, ardından sanki tek bir diziymiş gibi ikinci yineleyiciyle devam eder.
fn main() {
let joined: Vec<i32> = (1..=3).chain(10..=12).collect();
println!("{:?}", joined);
}fold: Tek Bir Değer Oluşturma
fold, genel amaçlı tüketicidir. Bir biriktiriciyle başlar ve her öğeyi bir kapanış kullanarak bu biriktiriciyle birleştirir.
sum gibi birçok tüketici, fold yönteminin özel durumudur.
fn main() {
let product = (1..=5).fold(1, |acc, x| acc * x);
println!("5! = {}", product);
}any ve all: Boolean Tüketicileri
any, en az bir öğe koşulu karşılıyorsa true döndürür; all ise yalnızca her öğe karşılıyorsa true döndürür.
Her ikisi de kısa devre yapar: Yanıt belli olur olmaz dururlar.
fn main() {
let nums = vec![2, 4, 6, 7];
println!("{}", nums.iter().all(|x| x % 2 == 0));
println!("{}", nums.iter().any(|x| x % 2 != 0));
}find ve position
find, bir koşulla eşleşen ilk öğeyi Option olarak döndürür. position ise bunun yerine ilk eşleşmenin dizinini döndürür.
Her ikisi de ilk eşleşmede kısa devre yapar.
fn main() {
let nums = vec![1, 3, 5, 8, 9];
println!("{:?}", nums.iter().find(|&&x| x % 2 == 0));
println!("{:?}", nums.iter().position(|&x| x % 2 == 0));
}İşlem Hatları Tasarlama
Bağdaştırıcıları üst üste ekleyerek işlem hatları oluşturun ve sonunda bir tüketici kullanın. Okunabilir olmalarını sağlayın: Her satırda bir işlem bulunsun.
Bağdaştırıcılar tembel olduğu için uzun zincirler bile verilerin üzerinden yalnızca bir kez geçer.
Hızlı Kontrol
Bağdaştırıcılar ve tüketiciler.
Özet
İşlemleri zincirlemeyi öğrendiniz:
- Bağdaştırıcılar (
take,skip,enumerate,zip,rev,chain) tembel kalır - Tüketiciler (
fold,any,all,find,position) işi tamamlar - Boolean ve arama tüketicileri kısa devre yapar
- Her işlem hattı önce bağdaştırıcılardan, sonra bir tüketiciden oluşur
Sıkça Sorulan Sorular
“Uyarlayıcılar ve Tüketiciler” dersi ücretsiz mi?
Evet — “Uyarlayıcılar ve Tüketiciler” 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.
“Uyarlayıcılar ve Tüketiciler” dersinde ne öğreneceğim?
İşlemleri zincirleme 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 3. dersidir.
“Uyarlayıcılar ve Tüketiciler” 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
- Iterator Özelliği
- map, filter, collect
- Uyarlayıcılar ve Tüketiciler
- Özel Yineleyiciler