CodeBlanks Logo Icon CodeBlanks

impl bloğu

impl ile bir struct'a metot tanımlamayı öğrenirsin.

impl bloğu

Metotlar bir türe impl bloğu içinde bağlanır. İlk parametre self'tir ve metodun çağrıldığı örneği temsil eder:

struct Kutu { en: u32, boy: u32 }

impl Kutu {
    fn alan(&self) -> u32 {
        self.en * self.boy
    }
}

let k = Kutu { en: 3, boy: 4 };
println!("{}", k.alan());   // 12

Metotlar türle ilgili davranışı tek yerde toplar ve nokta sözdizimiyle çağrılır.

Otomatik referans

k.alan() çağrısında Rust, metodun imzasına bakarak gerekirse &k, &mut k ya da *k ekler. Bu yüzden C++'taki -> gibi ayrı bir operatöre gerek yoktur:

let k = Kutu { en: 3, boy: 4 };
let r = &k;
println!("{} {}", k.alan(), r.alan());   // 12 12
println!("{}", Kutu::alan(&k));            // tam yol: 12

Uygulama Alan metodu

Kutu { en: u32, boy: u32 } için impl bloğunda fn alan(&self) -> u32 metodunu yaz. Kutu { en: 3, boy: 4 } için k.alan() sonucunu yazdır.

Başlangıç kodu

main.rs
struct Kutu {
    en: u32,
    boy: u32,
}

fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
struct Kutu {
    en: u32,
    boy: u32,
}

impl Kutu {
    fn alan(&self) -> u32 {
        self.en * self.boy
    }
}

fn main() {
    let k = Kutu { en: 3, boy: 4 };
    println!("{}", k.alan());
}

Beklenen çıktı

12

Soru ve cevaplar

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

1 <code>&amp;self</code> neyin kısaltmasıdır?

  • self: &Self Doğru cevap
  • self: Self
  • self: &mut Self
  • this: &Kutu

Açıklama: impl Kutu içinde Self, Kutu türünün takma adıdır; &self ise self: &Self yazmanın kısa yoludur.

2 Metodu bağla

Soru
____ Kutu {
    fn alan(&self) -> u32 {
        self.en * self.boy
    }
}
Cevap
impl Kutu {
    fn alan(&self) -> u32 {
        self.en * self.boy
    }
}

Açıklama: Metotlar impl TürAdı { ... } bloğuna yazılır.

3 Çağrı ve anlamı

Kavram Anlamı
k.alan() Metot çağrısı
Kutu::alan(&k) Tam yol çağrısı
self.en Örneğin alanı
Self Türün takma adı

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