İlişkili fonksiyonlar
- Rust kursu
- Başlangıç
- Ders 74/115
- 4 dk
Self parametresi olmayan ilişkili fonksiyonlarla constructor yazarsın.
İlişkili fonksiyonlar
self almayan fonksiyonlar da impl içine yazılabilir; bunlar metot değil, ilişkili fonksiyondur ve Tür::ad() ile çağrılır. En yaygını kurucudur; Rust'ta new bir anahtar kelime değil, gelenektir:
impl Kutu {
fn new(en: u32, boy: u32) -> Self {
Self { en, boy }
}
fn kare(n: u32) -> Self {
Self { en: n, boy: n }
}
}
let k = Kutu::kare(5);Self ve sabitler
Self, impl bloğundaki türün takma adıdır; tür adı değişse bile kod değişmez. impl içinde ilişkili sabitler de tanımlanabilir:
impl Kutu {
const BIRIM: Kutu = Kutu { en: 1, boy: 1 };
}
println!("{}", Kutu::BIRIM.en); // 1Kurucu doğrulama da yapabilir: fn new(en: u32, boy: u32) -> Option<Self> sıfır boyutta None döndürebilir.
Uygulama Kurucular
impl Kutu içine fn new(en: u32, boy: u32) -> Self, fn kare(n: u32) -> Self ve fn alan(&self) -> u32 yaz. Kutu::kare(5).alan() ve Kutu::new(2, 3).alan() sonuçlarını 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 new(en: u32, boy: u32) -> Self {
Self { en, boy }
}
fn kare(n: u32) -> Self {
Self { en: n, boy: n }
}
fn alan(&self) -> u32 {
self.en * self.boy
}
}
fn main() {
println!("{} {}", Kutu::kare(5).alan(), Kutu::new(2, 3).alan());
}Beklenen çıktı
25 6
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>String::from("a")</code> nedir?
- Bir alan erişimi
- Bir ilişkili fonksiyon çağrısı Doğru cevap
- Bir metot çağrısı
- Bir makro
Açıklama: :: ile çağrılan ve self almayan her fonksiyon ilişkili fonksiyondur; String::new ve Vec::with_capacity da öyledir.
2 Kurucuyu çağır
let k = Kutu____new(2, 3);
let k = Kutu::new(2, 3);
Açıklama: İlişkili fonksiyonlar tür adı ve :: ile çağrılır.
3 Yazım ve tür
| Kavram | Anlamı |
|---|---|
Kutu::new(2, 3) |
İlişkili fonksiyon |
k.alan() |
Metot |
Kutu::BIRIM |
İlişkili sabit |
-> Self |
Türün kendisini döndürür |