Struct Vektörleri
Karmaşık verileri bir Vec içinde tutun.
Struct Vektörleri, 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.
Why Vectors of Structs
Vektörler, kendi struct'larınız dahil olmak üzere herhangi tek bir türü barındırabilir. Bir Vec<Person>, birçok kişiyi sırayla saklar; bu da kullanıcılar, öğeler veya skorlar gibi kayıt listeleri için harikadır.
Bu, özel veri yapılarını boyutu artırılabilir bir listeyle birleştirir.
Defining a Struct
Öncelikle saklamak istediğiniz struct'ı tanımlayın. Bu Person bir isme ve yaşa sahip.
#[derive(Debug)] satırı, bir kişiyi {:?} ile yazdırmamızı sağlar; bu, vektörlerin tamamı için oldukça kullanışlıdır.
#[derive(Debug)]
struct Person {
name: String,
age: u32,
}Building the Vector
Struct örnekleri oluşturun, ardından bunları vec! makrosunda toplayın. Vektörün tipi otomatik olarak Vec<Person> olur.
Tüm kayıtları aynı anda yazdırmak için {:?} kullanın.
#[derive(Debug)]
struct Person { name: String, age: u32 }
fn main() {
let people = vec![
Person { name: String::from("Ann"), age: 30 },
Person { name: String::from("Bo"), age: 25 },
];
println!("{:?}", people);
}Yapıları Eklemek
Ayrıca boş başlayıp yapıları birer birer push edebilirsiniz. Vektörün büyüyebilmesi için mut olması gerekir.
Bu yaklaşım, kullanıcı girdisi gibi kayıtların zaman içinde geldiği durumlara uygundur.
#[derive(Debug)]
struct Item { name: String }
fn main() {
let mut cart = Vec::new();
cart.push(Item { name: String::from("Pen") });
cart.push(Item { name: String::from("Mug") });
println!("{:?}", cart);
}Kayıtlar Üzerinde Döngü Kurma
Sahipliği almadan her yapıyı okumak için &people üzerinde döngü kurun. Döngünün içinde alanlara p.name gibi nokta gösterimiyle erişirsiniz.
Bu, her kayıt için anlaşılır bir satır yazdırır.
#[derive(Debug)]
struct Person { name: String, age: u32 }
fn main() {
let people = vec![
Person { name: String::from("Ann"), age: 30 },
Person { name: String::from("Bo"), age: 25 },
];
for p in &people {
println!("{} is {}", p.name, p.age);
}
}Tek Bir Alanı Okuma
Bir yapıya ulaşmak için vektörü indeksleyin, ardından alanı için nokta gösterimini kullanın. Böylece people[0].name ilk kişinin adını verir.
İndekslerin 0'dan başladığını ve aralık dışı erişimin paniğe yol açtığını unutmayın.
#[derive(Debug)]
struct Person { name: String, age: u32 }
fn main() {
let people = vec![
Person { name: String::from("Ann"), age: 30 },
];
println!("name: {}", people[0].name);
}Bir Alanı Değiştirme
Bir kaydı düzenlemek için vektörün mut olması gerekir. Ardından yapıyı indeksleyip people[0].age = 31 örneğindeki gibi alanına bir değer atayın.
Bu, saklanan veriyi yerinde günceller.
struct Person { name: String, age: u32 }
fn main() {
let mut people = vec![
Person { name: String::from("Ann"), age: 30 },
];
people[0].age = 31;
println!("{}", people[0].age);
}Bir Alanı Toplama
Yineleyiciler her kayıttan tek bir alan alabilir. Buradaki iter().map(|p| p.age).sum() ifadesi tüm yaşları toplar.
map adımı, toplama işleminden önce her kişiyi yalnızca yaşa dönüştürür.
struct Person { name: String, age: u32 }
fn main() {
let people = vec![
Person { name: String::from("Ann"), age: 30 },
Person { name: String::from("Bo"), age: 20 },
];
let total: u32 = people.iter().map(|p| p.age).sum();
println!("total age = {}", total);
}Kayıtları Filtreleme
Bir kurala uyan kayıtları tutmak için iter().filter(...) kullanın. Kapanış, her yapı için bir bool döndürür.
Burada en az 30 yaşında olan kaç kişi bulunduğunu sayıyoruz.
struct Person { name: String, age: u32 }
fn main() {
let people = vec![
Person { name: String::from("Ann"), age: 30 },
Person { name: String::from("Bo"), age: 20 },
];
let adults = people.iter().filter(|p| p.age >= 30).count();
println!("adults: {}", adults);
}Bir Alana Göre Sıralama
Kayıtları bir alana göre sort_by_key ile sıralayın. Buna, yaş gibi sıralama ölçütü olacak değeri döndüren bir kapanış verin.
Sıralama vektörün düzenini değiştirdiği için vektörün mut olması gerekir.
#[derive(Debug)]
struct Person { name: String, age: u32 }
fn main() {
let mut people = vec![
Person { name: String::from("Ann"), age: 30 },
Person { name: String::from("Bo"), age: 20 },
];
people.sort_by_key(|p| p.age);
println!("{:?}", people);
}Kayıtları Sayma
Saklanan yapıların sayısı, her vektörde olduğu gibi basitçe len() değeridir. Bu, şu anda kaç kayıt tuttuğunuzu gösterir.
İlk kaydı okumadan önce denetim yapmak için bunu is_empty() ile birlikte kullanın.
struct Item { name: String }
fn main() {
let cart = vec![
Item { name: String::from("Pen") },
Item { name: String::from("Mug") },
];
println!("items: {}", cart.len());
}Kısa Kontrol
Yapı vektörlerini anlayıp anlamadığınızı sınayın.
Özet
Yapıları bir Vec içinde sakladınız, bunu vec! ve push ile oluşturdunuz, alanları indeksle ve döngüler içinde okudunuz veya düzenlediniz.
Ayrıca alanları topladınız, filtrelediniz, bir alana göre sıraladınız ve kayıtları saydınız. Artık yapılandırılmış veri listelerini vektörlerle yönetebilirsiniz.
Yapay zeka eğitmeniyle Rust öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 39
- Dersler
- 144
Sıkça Sorulan Sorular
“Struct Vektörleri” dersi ücretsiz mi?
Evet — “Struct Vektörleri” 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.
“Struct Vektörleri” dersinde ne öğreneceğim?
Karmaşık verileri bir Vec içinde tutun. 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.
“Struct Vektörleri” 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
- Vektör Oluşturma ve Doldurma
- Dizinleme ve Yineleme
- Büyütme ve Küçültme
- Struct Vektörleri