0Pricing
Learn Rust Coding · Ders

Varsayılan Yöntemler

Özellik varsayılanları

Varsayılan Yöntemler, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.

Gövdeli Yöntemler

Özellik yöntemleri yalnızca imzalardan oluşmak zorunda değildir. Bir özellik, uygulayanların otomatik olarak aldığı bir varsayılan uygulama (yöntem gövdesi) sağlayabilir.

Bu, birçok türdeki gereksiz tekrarları azaltır.

Bir Varsayılan Yöntem

Gövdeyi doğrudan özelliğin içine yazın. Özelliği uygulayan türler, ek kod olmadan bu yöntemi ücretsiz olarak devralır.

trait Greet {
    fn hello(&self) -> String {
        String::from("Hello there")
    }
}

struct Robot;
impl Greet for Robot {}

fn main() {
    println!("{}", Robot.hello());
}

Varsayılanı Geçersiz Kılma

Her uygulayan, kendi sürümünü sağlayarak varsayılanı geçersiz kılabilir. Geçersiz kılınan sürüm, o tür için varsayılanın yerini alır.

trait Greet {
    fn hello(&self) -> String { String::from("Hello there") }
}

struct Robot;
struct Pirate;
impl Greet for Robot {}
impl Greet for Pirate {
    fn hello(&self) -> String { String::from("Arr!") }
}

fn main() {
    println!("{}", Robot.hello());
    println!("{}", Pirate.hello());
}

Gerekli Yöntemleri Çağıran Varsayılanlar

Varsayılan bir yöntem, varsayılanı olmayanlar da dahil olmak üzere aynı özelliğin diğer yöntemlerini çağırabilir. Bu güçlü bir örüntüdür: uygulayanlar küçük bir çekirdek sağlar, varsayılanlar da bunun üzerine daha zengin davranış oluşturur.

trait Summary {
    fn title(&self) -> String;
    fn preview(&self) -> String {
        format!("Read more about: {}", self.title())
    }
}

struct Article { headline: String }
impl Summary for Article {
    fn title(&self) -> String { self.headline.clone() }
}

fn main() {
    let a = Article { headline: String::from("Rust Rocks") };
    println!("{}", a.preview());
}

Şablon Yöntem Örüntüsü

Gerekli ve varsayılan bölümlerin bu birleşimi şablon yöntemi örüntüsüdür. Özellik, genel akışı varsayılanlarla tanımlar ve değişken kısımları gerekli yöntemler olarak bırakır.

trait Report {
    fn body(&self) -> String;
    fn render(&self) -> String {
        format!("=== REPORT ===\n{}\n==============", self.body())
    }
}

struct Sales;
impl Report for Sales {
    fn body(&self) -> String { String::from("Sales up 10%") }
}

fn main() {
    println!("{}", Sales.render());
}

Birden Çok Varsayılan

Bir özellik, gerekli ve varsayılan yöntemleri serbestçe birlikte kullanabilir. Uygulayanların yalnızca gerekli olanları sağlaması gerekir.

trait Animal {
    fn name(&self) -> String;
    fn legs(&self) -> u32 { 4 }
    fn describe(&self) -> String {
        format!("{} has {} legs", self.name(), self.legs())
    }
}

struct Dog;
impl Animal for Dog {
    fn name(&self) -> String { String::from("Dog") }
}

fn main() {
    println!("{}", Dog.describe());
}

Varsayılanlar ve Standart Özellikler

Birçok standart özellik varsayılanlara dayanır. Örneğin Iterator yalnızca next gerektirir; her bağdaştırıcı ve tüketici bunun üzerine kurulmuş varsayılan bir yöntemdir.

Tek bir yöntemin tüm araç takımını açmasının nedeni budur.

Performans İçin Geçersiz Kılma

Bazen varsayılan çalışır, ancak özelleştirilmiş bir sürüm daha hızlıdır. Uygulayanlar, varsayılanların geri kalanını koruyarak yalnızca bu yöntemi geçersiz kılabilir.

trait Counter {
    fn items(&self) -> Vec<i32>;
    fn total(&self) -> i32 {
        self.items().iter().sum()
    }
}

struct Fast { precomputed: i32 }
impl Counter for Fast {
    fn items(&self) -> Vec<i32> { vec![] }
    fn total(&self) -> i32 { self.precomputed }
}

fn main() {
    println!("{}", Fast { precomputed: 99 }.total());
}

Özellikleri Kullanışlı Tutma

İyi özellik tasarımı: küçük bir yöntem grubunu gerekli kılın ve geri kalanı için kullanışlı varsayılanlar sağlayın. Uygulayanlar en az işi yapar, ancak zengin bir arayüz elde eder.

Bir Uyarı

Varsayılan bir yöntem yalnızca diğer özellik yöntemlerini ve bunlar üzerinden self arkasındaki türe erişebilir; bilinmeyen bir uygulayanın alanlarına doğrudan erişemez. Varsayılanları özelliğin kendi yöntemleri etrafında tasarlayın.

Varsayılan ve Gerekli Yöntemler Bir Bakışta

Gövdeli bir özellik yöntemi varsayılan, yalnızca imzaya sahip olan ise gerekli yöntemdir. Uygulayanlar her gerekli yöntemi sağlamalı, ancak varsayılanları değiştirmeden bırakabilir.

trait Logger {
    fn line(&self) -> String;
    fn log(&self) {
        println!("LOG: {}", self.line());
    }
}

struct App;
impl Logger for App {
    fn line(&self) -> String { String::from("started") }
}

fn main() {
    App.log();
}

Hızlı Kontrol

Varsayılan yöntemleri anlayışınızı sınayın.

Özet

Özellik varsayılanlarını öğrendiniz:

  • Bir özellik yöntemi, varsayılan uygulama olarak gövde içerebilir
  • Uygulayanlar bunu ücretsiz olarak devralır ve geçersiz kılabilir
  • Varsayılanlar gerekli yöntemleri çağırarak şablon yöntemi örüntüsünü mümkün kılabilir
  • Bu, gerekli yöntem yüzeyini küçük tutarak özellikleri kullanışlı kılar

Sıkça Sorulan Sorular

“Varsayılan Yöntemler” dersi ücretsiz mi?

Evet — “Varsayılan Yöntemler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.

“Varsayılan Yöntemler” dersinde ne öğreneceğim?

Özellik varsayılanları Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Varsayılan Yöntemler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Özellik Tanımlama
  2. Özellik Nesneleri ve dyn
  3. Statik ve Dinamik Dağıtım
  4. Varsayılan Yöntemler
← Learn Rust Coding Sayfasına Dön