CodeBlanks Logo Icon CodeBlanks

Görev modeli

Todo struct'ını ve alanlarını tanımlarsın.

Görev listesi: model

Bu projede komut satırından çalışan küçük bir görev listesi yazacağız: görev ekleme, listeleme, tamamlandı işaretleme ve komut okuma. İlk adım veriyi modellemek. Her görevin bir kimliği, metni ve tamamlanma durumu var:

struct Gorev {
    id: u32,
    metin: String,
    bitti: bool,
}

metin için String seçtik çünkü görev kendi metnine sahip olmalı; &str tutsaydık metnin başka bir yerde yaşaması gerekirdi.

Görevi göstermek

Görevin ekrandaki biçimini bir metot belirlesin. Tamamlanmış görevler [x], diğerleri [ ] ile gösterilecek:

impl Gorev {
    fn goster(&self) -> String {
        let isaret = if self.bitti { "x" } else { " " };
        format!("[{}] {}: {}", isaret, self.id, self.metin)
    }
}

Metot String döndürdüğü için sonucu yazdırmak, test etmek ya da dosyaya kaydetmek aynı kodla yapılabilir.

Uygulama İlk görev

Gorev struct'ına fn goster(&self) -> String metodunu ekle. id: 1, metin: "Süt al", bitti: false olan görevi oluşturup goster() sonucunu yazdır.

Başlangıç kodu

main.rs
struct Gorev {
    id: u32,
    metin: String,
    bitti: bool,
}

fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
struct Gorev {
    id: u32,
    metin: String,
    bitti: bool,
}

impl Gorev {
    fn goster(&self) -> String {
        let isaret = if self.bitti { "x" } else { " " };
        format!("[{}] {}: {}", isaret, self.id, self.metin)
    }
}

fn main() {
    let g = Gorev {
        id: 1,
        metin: String::from("Süt al"),
        bitti: false,
    };
    println!("{}", g.goster());
}

Beklenen çıktı

[ ] 1: Süt al

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Görevin tamamlanma durumu için en uygun tür hangisi?

  • u8
  • Option<String>
  • bool Doğru cevap
  • String

Açıklama: İki durumlu bir bilgi (bitti/bitmedi) için bool hem açık hem güvenlidir.

2 İşaret seç

Soru
let isaret = ____ self.bitti { "x" } else { " " };
Cevap
let isaret = if self.bitti { "x" } else { " " };

Açıklama: Rust'ta if bir ifadedir; değer üretip değişkene atanabilir.

3 Alan ve türü

Kavram Anlamı
id u32
metin String
bitti bool
goster() -> String

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma