Uygulama Bloklarına Giriş
Coddy'nin Rust Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 1 / 61.
Rust'ta yapılar bir türün hangi verileri barındırdığını tanımlar, ancak bu türün ne yapabileceğini tanımlamaz. Bir yapıya davranış kazandırmak için uygulama bloklarını impl anahtar sözcüğüyle kullanırız.
Bir uygulama bloğu, işlevleri (metot olarak adlandırılır) belirli bir struct'a bağlar. Temel yapı şöyledir:
struct Dog {
name: String,
age: u8,
}
impl Dog {
fn bark(&self) {
println!("{} says woof!", self.name);
}
}
impl Dog bloğu, Rust'a içindeki her şeyin Dog yapısına ait olduğunu söyler. Bu ayrım, uygulama bloğunda ihtiyaç duyduğun kadar yöntem eklemene olanak tanırken veri tanımının temiz kalmasını sağlar.
Bir metodu çağırmak için bir örnek üzerinde nokta notasyonunu kullanın:
fn main() {
let my_dog = Dog {
name: String::from("Rex"),
age: 3,
};
my_dog.bark(); // Çıktı: Rex hav diyor!
}
Verileri (struct) davranıştan (impl bloğu) ayırmaya yönelik bu kalıp, Rust kodunu düzenlemenin temelidir. Gelecek derslerde, yöntemlerin yukarıdaki örnekte gördüğünüz &self parametresi aracılığıyla struct verilerine nasıl eriştiğini inceleyeceğiz.
Görev
KolayCat yapısını iki alanla oluştur: name (String) ve lives (u8).
Cat için, &self alan ve kedinin adını, ardından " says meow!" ifadesini yazdıran meow adlı bir metoda sahip bir uygulama bloğu ekle.
İki girdi alacaksın:
- İlk satır: kedinin adı (String)
- İkinci satır: can sayısı (u8)
Sağlanan değerlerle bir Cat örneği oluştur ve üzerinde meow metodunu çağır.
Beklenen çıktı biçimi:
{name} says meow!Kendin dene
use std::io;
// TODO: 'name' (String) ve 'lives' (u8) alanlarına sahip Cat yapısını (struct) tanımlayın
// TODO: Cat için 'meow' metoduna sahip bir uygulama (implementation) bloğu ekleyin
fn main() {
let mut name = String::new();
io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
let mut lives_input = String::new();
io::stdin().read_line(&mut lives_input).expect("Failed to read line");
let lives: u8 = lives_input.trim().parse().expect("Failed to parse lives");
// TODO: Bir Cat örneği oluşturun ve meow metodunu çağırın
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Metotlar ve Davranış
Uygulama Bloklarına GirişSelf ParametresiDeğiştirilebilir Metotlarİlişkili FonksiyonlarBirden Fazla Uygulama BloğuMetot ZincirlemeÖzet - Dikdörtgen Eylemleri4Proje: Sanal Evcil Hayvan
Evcil Hayvanı TanımlamaEvcil Hayvanı Besleme2Kapsülleme ve Modüller
Modül TemelleriPublic Anahtar KelimesiPrivate AlanlarGetter'larSetter'larÖzet - Güvenli Kasa5Generic Yapılar
Generic Struct'larGeneric MetotlarÇoklu Generic TürlerGeneric FonksiyonlarÖzet - Koordinat Noktası8Sınırlandırıcı Olarak Trait'ler
Trait Sınırlandırıcı SözdizimiÇoklu SınırlandırıcılarWhere CümleciğiTrait'ler ile Tip DöndürmeÖzet - Generic Yazıcı11Rust'ta Tasarım Kalıpları
Newtype KalıbıKompozisyonDrop Trait'iFrom ve IntoÖzet - Smart Pointer Mock3İleri Seviye Enum'lar
Veri İçeren Enum'larEnum MetotlarıVeri Varyantlarını EşlemeOption Enum'ına Yeniden BakışÖzet - Shape Enum6Trait Tanımlama
Trait Nedir?Traitleri UygulamaVarsayılan UygulamalarVarsayılanları Geçersiz KılmaParametreli TraitlerÖzet - Media PlayerKendi başına pratik yap: Online Rust derleyicisi