Özet - Yapılar
- Rust kursu
- Başlangıç
- Ders 70/115
- 5 dk
Alanları ve örnek oluşturmayı birleştirerek bir nokta yapısı yazarsın.
Yapılar özeti
Üç struct biçimi vardır: adlı alanlı (struct Oyuncu { ad: String }), tuple struct (struct Renk(u8, u8, u8);) ve unit-like (struct Sessiz;). Örnek oluştururken tüm alanlar verilir; alan kısaltması ve ..kaynak güncelleme sözdizimi yazımı kısaltır. Değiştirmek için örneğin tamamı mut olmalıdır. #[derive(Debug)] ile {:?} çıktısı alınır.
Struct ve fonksiyonlar
Struct'ı işleyen bir fonksiyon, parametreyi genellikle referans olarak alır:
#[derive(Debug)]
struct Kutu { en: u32, boy: u32 }
fn alan(k: &Kutu) -> u32 {
k.en * k.boy
}Bu fonksiyon yalnızca Kutu ile çalıştığı halde serbest durur. Bir sonraki grupta onu impl bloğuna taşıyıp metot yapacağız: k.alan().
Uygulama Kutu alanı
#[derive(Debug)] ile Kutu { en: u32, boy: u32 } tanımla ve fn alan(k: &Kutu) -> u32 yaz. Kutu { en: 3, boy: 4 } için Kutu { en: 3, boy: 4 } alan=12 çıktısını üret.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
#[derive(Debug)]
struct Kutu {
en: u32,
boy: u32,
}
fn alan(k: &Kutu) -> u32 {
k.en * k.boy
}
fn main() {
let k = Kutu { en: 3, boy: 4 };
println!("{:?} alan={}", k, alan(&k));
}Beklenen çıktı
Kutu { en: 3, boy: 4 } alan=12
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir fonksiyon struct'ı yalnızca okuyacaksa parametre nasıl olmalı?
- k: &mut Kutu
- mut k: Kutu
- k: &Kutu Doğru cevap
- k: Kutu
Açıklama: Referans almak sahipliği çağıranda bırakır; kutu fonksiyondan sonra da kullanılabilir.
2 Örnek oluştur
let k = Kutu ____;
let k = Kutu { en: 3, boy: 4 };
Açıklama: Adlı alanlı struct örneği süslü parantez ve alan adlarıyla oluşturulur.
3 Grubun özeti
| Kavram | Anlamı |
|---|---|
struct A { x: i32 } |
Adlı alanlar |
struct B(i32); |
Tuple struct |
struct C; |
Unit-like |
B { ..a } |
Güncelleme sözdizimi |