Özel Türler için Numaralandırmalar
Birden çok varyanttan biri olabilen ve çoğu zaman ilişkili veriler taşıyan türleri tanımlamak için numaralandırmaları kullanın.
Özel Türler için Numaralandırmalar, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 3 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 3 dersten oluşur.
Numaralandırmalar: Özel Tür Seçenekleri
Özel Türler için Numaralandırmalar konusuna hoş geldiniz! Rust'ta numaralandırmalar, birkaç olası ve birbirinden farklı varyanttan biri olabilen bir tür tanımlamanızı sağlar.
Bir numaralandırmayı, "Bu öğe A, OR B, OR C olabilir" demenin bir yolu olarak düşünebilirsiniz. Farklı durumları veya seçimleri temsil etmek için son derece kullanışlıdır.
Basit Bir Numaralandırma Tanımlama
Bir numaralandırma tanımlamak için enum anahtar sözcüğünün ardından adını ve varyantlarını içeren süslü parantezleri kullanırsınız. Her varyant farklı bir seçenektir.
Yönler için basit bir örnek şöyledir:
enum Direction {
North,
South,
East,
West,
}
fn main() {
let my_direction = Direction::North;
println!("My direction is {:?}", my_direction);
}İlişkili Verilere Sahip Numaralandırmalar
Basit varyantların aksine, numaralandırma varyantları veri de taşıyabilir! Bu, numaralandırmaları çok güçlü kılar; her varyant kendine özgü bir bilgi kümesi taşıyabilir.
Veri bir demet ((i32, String) gibi) veya bir yapı ({ x: i32, y: i32 } gibi) olabilir.
İlişkili Veriler Uygulamada
Her varyantın farklı bir ileti türünü temsil ettiği, bazı varyantların veri taşıdığı ve bazılarının taşımadığı bir numaralandırmaya bakalım.
Move varyantının bir yapı, Write varyantının bir String ve ChangeColor varyantının bir demet kullandığına dikkat edin.
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
ChangeColor(i32, i32, i32),
}
fn main() {
let m1 = Message::Quit;
let m2 = Message::Move { x: 10, y: 20 };
let m3 = Message::Write(String::from("hello"));
let m4 = Message::ChangeColor(255, 0, 128);
// We can't directly print enums with associated data using {:?}
// without deriving Debug, which we'll cover later.
// For now, just know these instances are created.
println!("Messages created!");
}`Option` Numaralandırması: Yokluğu Ele Alma
Rust'ın en temel numaralandırmalarından biri Option<T>'dir. Var olabilecek veya olmayabilecek değerleri temsil etmek için kullanılır ve diğer dillerde yaygın olan boş gösterici hatalarını önler.
Some(T):Ttüründe bir değer tutan varyant.None: Değer olmadığını temsil eden varyant.
`Option<T>`'ı Etkili Kullanma
Option<T>, hem Some hem de None durumlarını açıkça ele almanızı zorunlu kılar; bu da kodunuzu daha güvenli ve sağlam hâle getirir. Artık beklenmedik null çökmeleri yok!
Şöyle kullanabilirsiniz:
fn find_item(id: i32) -> Option<String> {
if id == 7 {
Some(String::from("Found item 7!"))
} else {
None
}
}
fn main() {
let item1 = find_item(7);
let item2 = find_item(5);
println!("Item 1: {:?}", item1);
println!("Item 2: {:?}", item2);
}Kısaca: `Result` Numaralandırması
Bir diğer önemli numaralandırma, hata yönetimi için kullanılan Result<T, E>'dir. İki varyantı vardır:
Ok(T): Başarıyı belirtir ve başarılı değeri içerir.Err(E): Başarısızlığı belirtir ve bir hata değeri içerir.
Daha sonraki bir derste Result konusunu ayrıntılı olarak ele alacağız; ancak bunun da güçlü bir numaralandırma örüntüsü olduğunu bilmek faydalıdır!
Numaralandırmalarda Yöntemler
Yapılarda olduğu gibi, bir impl bloğu kullanarak numaralandırmalar için yöntemler tanımlayabilirsiniz. Bu yöntemler, numaralandırmanın varyantına göre işlemler gerçekleştirebilir veya değerler döndürebilir.
Önceki Message numaralandırmamıza bir call yöntemi ekleyelim:
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
ChangeColor(i32, i32, i32),
}
impl Message {
fn call(&self) {
println!("A message was called!");
}
}
fn main() {
let m = Message::Write(String::from("hello"));
m.call();
}Numaralandırmalar Hakkında Kısa Kontrol
Aşağıdaki ifadelerden hangileri Rust numaralandırmaları hakkında doğrudur?
Tekrar: Özel Türler için Numaralandırmalar
Harika iş! Rust numaralandırmalarının, birkaç varyanttan biri olabilen özel türleri tanımlamak için nasıl güçlü bir yol sunduğunu öğrendiniz.
- Numaralandırmalar, seçimleri ve durumları açıkça modellemenizi sağlar.
- Varyantlar ilişkili veri taşıyabilir; bu da onları son derece esnek kılar.
Option<T>numaralandırması, bir değerin yokluğunu güvenli biçimde ele almak için önemlidir.- Numaralandırmaların yöntemleri
implbloklarıyla tanımlanabilir.
Sırada, güçlü örüntü eşlemeyi kullanarak bu numaralandırma varyantlarıyla nasıl çalışılacağını inceleyeceğiz!
Sıkça Sorulan Sorular
“Özel Türler için Numaralandırmalar” dersi ücretsiz mi?
Evet — “Özel Türler için Numaralandırmalar” 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 3 dersten oluşur.
“Özel Türler için Numaralandırmalar” dersinde ne öğreneceğim?
Birden çok varyanttan biri olabilen ve çoğu zaman ilişkili veriler taşıyan türleri tanımlamak için numaralandırmaları kullanı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, 3 dersinin 2. dersidir.
“Özel Türler için Numaralandırmalar” 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
- Yapıları Tanımlama ve Kullanma
- Özel Türler için Numaralandırmalar
- Güçlü Örüntü Eşleştirme