CodeBlanks Logo Icon CodeBlanks

İlişkili fonksiyonlar

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);   // 1

Kurucu 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

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 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

Soru
let k = Kutu____new(2, 3);
Cevap
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

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