İsimli Yapılar (Named Structs)
C ve C++ dillerindeki gibi Rust’ın da özel (kullanıcı tanımlı) yapılara desteği vardır:
struct Person { name: String, age: u8, } fn describe(person: &Person) { println!("{} {} yaşında", person.name, person.age); } fn main() { let mut peter = Person { name: String::from("Peter"), age: 27, }; describe(&peter); peter.age = 28; describe(&peter); let name = String::from("Avery"); let age = 39; let avery = Person { name, age }; describe(&avery); }
This slide should take about 10 minutes.
Önemli Noktalar:
- Yapılar C veya C++’daki gibi çalışır.
- C++’daki gibi ve C’den farklı olarak, bir türü tanımlamak için typedef’e gerek yoktur.
- C++’dan farklı olarak yapılar arasında kalıtım (inheritance) yoktur.
- Bu, insanlara farklı yapı türleri olduğunu duyurmak için iyi bir zaman olabilir.
- Sıfır boyutlu (zero-sized) yapılar (örn.
struct Foo;
), bir özelliğin (trait) bazı türlere gerçekleştiriminde (implementing) kullanılabilir, ancak değer olarak kendisinde saklamak istenilen herhangi bir veri yoktur. - Sonraki slaytta alan adları (field names) önemli olmadığında kullanılan Demet (Tuple) yapıları tanıtılacaktır.
- Sıfır boyutlu (zero-sized) yapılar (örn.
- Eğer zaten doğru adlara sahip değişkenleriniz varsa, o zaman yapıyı bir kısaltma kullanarak oluşturabilirsiniz.
- Yapı alanları (struct fields) varsayılan değerleri desteklemez. Varsayılan değerler, daha sonra ele alacağımız
Default
özelliği (trait) uygulanarak belirtilir.
Daha Fazlasını Keşfedin
-
Burada aynı zamanda yapı güncelleme sözdizimini (struct update syntax) de gösterebilirsiniz:
let jackie = Person { name: String::from("Jackie"), ..avery };
-
Bu, eski yapının (struct) alanlarının çoğunu açıkça tek tek yazmak zorunda kalmadan kopyalamamıza olanak tanır. Bu her zaman son öğe olmalıdır.
-
Bu, çoğunlukla
Default
özelliği (trait) ile birlikte kullanılır.Default
özelliği ile ilgili slaytta yapı güncelleme sözdizimini (struct update syntax) daha detaylı ele alacağız, bu yüzden öğrenciler sormadıkça burada bahsetmemize gerek yok.