Görev modeli
- Rust kursu
- Başlangıç
- Ders 89/115
- 6 dk
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
struct Gorev {
id: u32,
metin: String,
bitti: bool,
}
fn main() {
// buraya yaz
}Örnek çözüm
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ç
let isaret = ____ self.bitti { "x" } else { " " };
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 |