0Pricing
Learn Rust Coding · Ders

Veri İçeren Enum'lar

Varyantlara değerler ekleyin.

Veri İçeren Enum'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.

Varyantlar Veri İçerebilir

Şimdiye kadar varyantlarımız yalnızca adlardan oluşuyordu. Rust'ta bir varyant, parantezlerin içinde veri de taşıyabilir.

Bu, tek bir enum'un hem değerin türünü hem de değerin kendisini açıklamasını sağlar.

enum Message {
    Quit,
    Move(i32, i32),
    Write(String),
}

Tek Değer İçeren Bir Varyant

Bir varyanta tek bir veri parçası eklemek için parantezlerin içine bir tür yazın.

Burada Celsius(f64), Celsius varyantının bir f64 sayısı içerdiği anlamına gelir. Değeri oluştururken bu sayıyı sağlarsınız.

enum Temperature {
    Celsius(f64),
    Fahrenheit(f64),
}

fn main() {
    let t = Temperature::Celsius(21.5);
    println!("Created a temperature");
}

Birden Çok Değer İçeren Varyantlar

Bir varyant, virgüllerle ayrılmış birden çok değer içerebilir.

Move(i32, i32) iki tam sayı saklar; bunlar örneğin bir x ve y koordinatı olabilir. Varyantı oluştururken ikisini de geçirirsiniz.

enum Shape {
    Circle(f64),
    Rectangle(f64, f64),
}

fn main() {
    let r = Shape::Rectangle(3.0, 4.0);
    println!("Made a rectangle");
}

match ile Veri Çıkarma

Bir varyantın içindeki veriyi okumak için veriyi desende adlandırın. Bu adlar, ilgili kolda kullanabileceğiniz değişkenlere dönüşür.

Burada Shape::Circle(r), saklanan yarıçapı r değişkenine bağlar.

enum Shape {
    Circle(f64),
    Rectangle(f64, f64),
}

fn main() {
    let s = Shape::Circle(2.0);
    match s {
        Shape::Circle(r) => println!("radius {}", r),
        Shape::Rectangle(w, h) => println!("{} x {}", w, h),
    }
}

Bağlanan Değerleri Kullanma

Veriler bir ada bağlandıktan sonra, onlarla herhangi bir değişken gibi hesaplama yapabilirsiniz.

Bu program bir şekli eşleştirir ve alanını hesaplayarak sonucu match ifadesinden döndürür.

enum Shape {
    Circle(f64),
    Rectangle(f64, f64),
}

fn main() {
    let s = Shape::Rectangle(3.0, 4.0);
    let area = match s {
        Shape::Circle(r) => 3.14 * r * r,
        Shape::Rectangle(w, h) => w * h,
    };
    println!("area = {}", area);
}

Varyanta Göre Farklı Veriler

Her varyant farklı bir veri biçimi taşıyabilir; bazıları ise hiç veri taşımayabilir.

Enum'ları bu kadar ifade gücüne sahip yapan esneklik budur: tek bir tür, birbirinden farklı birçok durumu modeller.

enum Message {
    Quit,
    Move(i32, i32),
    Write(String),
}

Yapı Benzeri Varyantlar

Bir varyant, tıpkı bir yapı gibi, küme parantezleriyle adlandırılmış alanlar kullanabilir. Bu, her alanın anlamını açıkça belirtir.

Varyantı her alanı adlandırarak oluşturur ve aynı şekilde eşleştirirsiniz.

enum Event {
    Click { x: i32, y: i32 },
    KeyPress(char),
}

fn main() {
    let e = Event::Click { x: 10, y: 20 };
    match e {
        Event::Click { x, y } => println!("click at {},{}", x, y),
        Event::KeyPress(c) => println!("key {}", c),
    }
}

Varyantlarda Dizeler

Varyantlar String gibi sahip olunan verileri taşıyabilir. Eşleştirme, metne erişmenizi sağlar.

Not: değere göre eşleştirme veriyi dışarı taşır; burada veriyi hemen kullandığımız için bu sorun değildir.

enum Message {
    Write(String),
    Quit,
}

fn main() {
    let m = Message::Write(String::from("hello"));
    match m {
        Message::Write(text) => println!("text: {}", text),
        Message::Quit => println!("bye"),
    }
}

Standart Option Enum'u

Rust'ın yerleşik Option<T> türü veriye sahip bir enum'dur: Some(T) bir değer taşır, None ise hiçbir şey taşımaz.

Rust, null kullanmadan "belki bir değer" durumunu böyle ifade eder. Bu türü kendi enum'larınız gibi eşleştirirsiniz.

fn main() {
    let maybe: Option<i32> = Some(5);
    match maybe {
        Some(n) => println!("got {}", n),
        None => println!("nothing"),
    }
}

Hepsini Bir Araya Getirme

Bu eksiksiz program sıcaklıkları modeller, ardından bir Celsius okumasını match içinde Fahrenheit'a dönüştürür.

Varyantı veya değerini değiştirmeyi ve programı yeniden çalıştırmayı deneyin.

enum Temperature {
    Celsius(f64),
    Fahrenheit(f64),
}

fn main() {
    let t = Temperature::Celsius(25.0);
    let f = match t {
        Temperature::Celsius(c) => c * 9.0 / 5.0 + 32.0,
        Temperature::Fahrenheit(f) => f,
    };
    println!("{} F", f);
}

Veri Taşıyan Varyantlar Ne Zaman Kullanılır

Her durum doğal olarak ek bilgilerle birlikte geliyorsa veri taşıyan varyantları tercih edin.

  • Bir Circle yarıçapa ihtiyaç duyar.
  • Bir Write mesajı kendi metnine ihtiyaç duyar.
  • Bir Move koordinatlara ihtiyaç duyar.

Verileri varyantla birlikte paketlemek, ilişkili bilgileri bir arada ve tür güvenli biçimde tutar.

Kısa Kontrol

Veri taşıyan enum'ları anlayıp anlamadığınızı kontrol edin.

Özet

Enum varyantlarının veri taşıyabildiğini öğrendiniz: tek bir değer, birden çok değer, adlandırılmış yapı benzeri alanlar veya hiç veri.

Bu verileri Circle(r) örneğinde olduğu gibi bir match deseninde adlandırarak okuduğunuzu gördünüz. Standart Option türü de aynı şekilde çalışır. Sırada eşleştirmeleri koruyucular ve bağlamalarla daha hassas hâle getirmek var.

Sıkça Sorulan Sorular

“Veri İçeren Enum'lar” dersi ücretsiz mi?

Evet — “Veri İçeren Enum'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.

“Veri İçeren Enum'lar” dersinde ne öğreneceğim?

Varyantlara değerler ekleyin. 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.

“Veri İçeren Enum'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.

Bu kursun tüm dersleri

  1. İlk Enum'unuzu Tanımlama
  2. Enum Varyantlarıyla Eşleştirme
  3. Veri İçeren Enum'lar
  4. Match Koruyucuları ve Bağlamaları
← Learn Rust Coding Sayfasına Dön