impl bloğu
- Rust kursu
- Başlangıç
- Ders 71/115
- 4 dk
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()); // 12Metotlar 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: 12Uygulama 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
struct Kutu {
en: u32,
boy: u32,
}
fn main() {
// buraya yaz
}Örnek çözüm
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>&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
____ Kutu {
fn alan(&self) -> u32 {
self.en * self.boy
}
}
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ı |