Kapanışlar
Anonim işlevler
Kapanışlar, 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.
Closure Nedir?
Closure, bir değişkende saklayabileceğiniz ve daha sonra çağırabileceğiniz anonim bir işlevdir. Parametrelerin çevresinde dikey çubuklarla yazılır.
fn main() {
let add_one = |x| x + 1;
println!("{}", add_one(4));
}Closure Sözdizimi
Parametreler |...| arasına yazılır ve ardından gövde gelir. Tek bir ifadeden oluşuyorsa küme parantezleri gerekmez.
|x| x + 1— bir parametre.|a, b| a + b— iki parametre.
fn main() {
let multiply = |a, b| a * b;
println!("{}", multiply(3, 5));
}Çok Satırlı Closure'lar
Birden fazla deyim için, tıpkı bir işlevde olduğu gibi gövdeyi küme parantezleri içine alın.
fn main() {
let describe = |n: i32| {
let doubled = n * 2;
println!("{} doubled is {}", n, doubled);
};
describe(7);
}Ortamı Yakalama
Sıradan bir işlevin aksine closure, çevresindeki kapsamdan değişkenleri yakalayabilir ve bunları içinde kullanabilir.
fn main() {
let factor = 10;
let scale = |x| x * factor;
println!("{}", scale(5));
}Closure'larda Tür Çıkarımı
Closure'lar genellikle parametre ve dönüş türlerini nasıl kullanıldıklarından çıkarır; bu nedenle ek açıklamalar isteğe bağlıdır.
Gerektiğinde açıklık sağlamak için türler ekleyebilirsiniz.
fn main() {
let greet = |name: &str| -> String {
format!("Hello, {}!", name)
};
println!("{}", greet("Rust"));
}Bağımsız Değişken Olarak Closure'lar
Standart yöntemlerin çoğu bir closure kabul eder. Örneğin map, her öğeye bir closure uygular.
fn main() {
let nums = vec![1, 2, 3];
let doubled: Vec<i32> = nums.iter().map(|x| x * 2).collect();
println!("{:?}", doubled);
}Closure'larla Filtreleme
filter yöntemi, closure'ın true döndürdüğü öğeleri tutar.
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);
}Closure'ları Saklama
Closure'ların kendilerine özgü anonim türleri vardır; ancak bunları bir değişkende saklayıp yeniden kullanabilirsiniz.
fn main() {
let is_even = |n: i32| n % 2 == 0;
println!("{} {}", is_even(4), is_even(7));
}Closure'lar ve İşlevler
Farklar:
- İşlevler çevredeki değişkenleri yakalayamaz; closure'lar yakalayabilir.
- Closure'lar anon yine ve çoğu zaman kısadır.
- Closure türleri genellikle çıkarılır.
fn main() {
let base = 100;
let bonus = |earned: i32| earned + base;
println!("{}", bonus(25));
}Hesaplanan Değerleri Döndürme
Sonuçları temiz ve anlaşılır bir işlem hattında hesaplamak için closure'ları yineleyicilerle birleştirin.
fn main() {
let nums = vec![10, 20, 30];
let total: i32 = nums.iter().map(|x| x + 1).sum();
println!("total {}", total);
}Closure'lar Başvuru Yoluyla Yakalar
Varsayılan olarak bir closure, yakalanan değişkenleri ödünç alır. Yalnızca ödünç alınmışlarsa bunları sonrasında dışarıda okumaya devam edebilirsiniz.
fn main() {
let name = String::from("Ada");
let printer = || println!("Name: {}", name);
printer();
println!("still usable: {}", name);
}Hızlı Kontrol
Closure'ların önemli bir yeteneğini hatırlayınız.
Tekrar
Rust'ta closure'lar:
|params| bodybiçiminde yazılan anonim işlevlerdir.- Ortamlarındaki değişkenleri yakalayabilir.
- Türleri genellikle çıkarılır.
mapvefiltergibi yineleyici yöntemleriyle yaygın olarak kullanılır.
fn main() {
let tax = 0.2;
let with_tax = |price: f64| price * (1.0 + tax);
println!("{}", with_tax(50.0));
}Sıkça Sorulan Sorular
“Kapanışlar” dersi ücretsiz mi?
Evet — “Kapanışlar” 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.
“Kapanışlar” dersinde ne öğreneceğim?
Anonim işlevler 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.
“Kapanışlar” 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.