Yapıları Tanımlama ve Kullanma
İlişkili verileri gruplamak için demet yapıları ve birim benzeri yapılar da dâhil olmak üzere yapılarla özel veri yapıları oluşturun.
Yapıları Tanımlama ve Kullanma, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 3 dersinin 1. 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 3 dersten oluşur.
Yapılarla Tanışın: Özel Veri Türleri
Rust'ta yapılar (structures sözcüğünün kısaltması), birbiriyle ilişkili birden çok değeri anlamlı bir grup içinde adlandırıp bir araya getirmenizi sağlayan özel veri türleri oluşturmanın bir yoludur.
Bir yapıyı bir User, Color veya uzaydaki bir Point için şablon gibi düşünebilirsiniz. Bir User'ın adı, e-posta adresi ve yaşı için ayrı değişkenler kullanmak yerine bunların tümünü bir User yapısının içine koyabilirsiniz.
Bu, verilerinizi mantıksal olarak düzenlemenize ve kodunuzu okumayı ve bakımını yapmayı kolaylaştırmanıza yardımcı olur.
Klasik Bir Yapı Tanımlama
En yaygın yapı türü, her veri parçasına (bunlara alan denir) ad verdiğiniz klasik yapıdır. Bir yapıyı şöyle tanımlarsınız:
struct User {
username: String,
email: String,
sign_in_count: u64,
active: bool,
}
fn main() {
// This code only defines the struct blueprint.
// No actual user has been created yet!
println!("Struct 'User' blueprint defined.");
}Yapı Örnekleri Oluşturma
Bir yapı tanımladıktan sonra onun somut örneklerini oluşturabilirsiniz. Her örnek, alanları için belirli değerler tutar. Her alan için somut değerler belirterek bir örnek oluşturursunuz.
struct User {
username: String,
email: String,
sign_in_count: u64,
active: bool,
}
fn main() {
let user1 = User {
email: String::from("alice@example.com"),
username: String::from("alice123"),
active: true,
sign_in_count: 1,
};
println!("User instance created!");
}Yapı Alanlarına Erişme
Bir yapı örneğinden veri almak için nokta gösterimini kullanırsınız. Örnek adını, bir noktayı (.) ve ardından alan adını yazmanız yeterlidir.
struct User {
username: String,
email: String,
sign_in_count: u64,
active: bool,
}
fn main() {
let user1 = User {
email: String::from("alice@example.com"),
username: String::from("alice123"),
active: true,
sign_in_count: 1,
};
println!("User's username: {}", user1.username);
println!("User's email: {}", user1.email);
}Yapılarda Değişebilirlik
Normal değişkenlerde olduğu gibi, yapı örneklerinin tamamı da mut anahtar sözcüğü kullanılarak değişebilir yapılabilir. Bir örnek değişebilirse, tüm alanları değiştirilebilir.
Yalnızca belirli alanları değişebilir yapamazsınız; değişebilirlik yapı örneğinin tamamı için geçerlidir.
struct User {
username: String,
email: String,
sign_in_count: u64,
active: bool,
}
fn main() {
let mut user1 = User {
email: String::from("alice@example.com"),
username: String::from("alice123"),
active: true,
sign_in_count: 1,
};
println!("Old email: {}", user1.email);
user1.email = String::from("new_alice@example.com");
println!("New email: {}", user1.email);
}Demet Yapıları: Adsız Alanlar
Demet yapıları, demetlere benzeyen ancak bir adı olan başka bir yapı biçimidir. Bir demete farklı bir tür adı vermek istediğinizde, fakat tek tek alanlarını adlandırmanız gerekmediğinde kullanışlıdır.
Örneğin Color(i32, i32, i32), üç tamsayıyı bir araya getiren adlandırılmış bir demettir.
struct Color(i32, i32, i32);
struct Point(i32, i32, i32);
fn main() {
let black = Color(0, 0, 0);
let origin = Point(0, 0, 0);
println!("Tuple structs 'Color' and 'Point' defined.");
}Demet Yapılarını Kullanma
Bir demet yapısının örneğini oluşturmak, normal bir demet oluşturmaya benzer. İçindeki değerlere erişmek için 0'dan başlayan indeksleriyle nokta gösterimini kullanırsınız.
struct Color(i32, i32, i32);
struct Point(i32, i32, i32);
fn main() {
let black = Color(0, 0, 0);
let origin = Point(0, 0, 0);
println!("Black color: R={}, G={}, B={}", black.0, black.1, black.2);
println!("Origin point: X={}, Y={}, Z={}", origin.0, origin.1, origin.2);
}Birim Benzeri Yapılar: İşaretleyiciler
Hiç alanı olmayan yapılar da tanımlayabilirsiniz. Bunlara, birim türü () gibi davrandıkları için birim benzeri yapılar denir.
Verinin kendisi önemli olmadığında, belirli bir özelliği bir tür üzerinde uygulamak için genellikle işaretleyici olarak kullanılırlar.
struct AlwaysTrue;
fn main() {
let subject = AlwaysTrue;
// Unit-like structs don't store data directly,
// but they can be instantiated and used as types.
println!("Unit-like struct 'AlwaysTrue' created.");
}Yapı Güncelleme Sözdizimi
Var olan bir yapıyı temel alarak yeni bir yapı örneği oluşturmanız, ancak yalnızca bazı alan değerlerini değiştirmeniz gerekiyorsa Rust kullanışlı bir yapı güncelleme sözdizimi (..) sunar.
Bu sözdizimi, kalan alanları belirtilen örnekten taşır. Bu nedenle özgün örnek, Copy uygulayan alanlar içeriyorsa artık kullanılamaz.
struct User {
username: String,
email: String,
sign_in_count: u64,
active: bool,
}
fn main() {
let user1 = User {
email: String::from("alice@example.com"),
username: String::from("alice123"),
active: true,
sign_in_count: 1,
};
let user2 = User {
email: String::from("bob@example.com"),
username: String::from("bob456"),
..user1 // Copy remaining fields from user1
};
println!("User 2 email: {}", user2.email);
println!("User 2 active: {}", user2.active);
// user1.username is now moved, so user1 can't be used here.
}Yapılar Sınaması
Rust yapıları hakkındaki anlayışınızı sınayın.
Tekrar: Yapılara Genel Bakış
Rust'ta yapıların nasıl tanımlanacağını ve kullanılacağını öğrendiniz!
- Klasik yapılar, özel veri türleri oluşturmak için adlandırılmış alanları bir araya getirir.
- Demet yapıları adlandırılmış demetlerdir; alan adları kesinlikle gerekli olmadığında kullanışlıdır.
- Birim benzeri yapıların alanı yoktur ve işaretleyici görevi görür.
- Yapı örnekleri, alanlarının değiştirilmesine izin vermek için
mutyapılabilir. ..sözdizimi, var olan örneklerden yeni örnekler oluşturmaya yardımcı olur.
Yapılar, Rust programlarında ilişkili verileri düzenlemenin temelidir; kodunuzu daha düzenli ve okunabilir hâle getirir.
Sıkça Sorulan Sorular
“Yapıları Tanımlama ve Kullanma” dersi ücretsiz mi?
Evet — “Yapıları Tanımlama ve Kullanma” 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 3 dersten oluşur.
“Yapıları Tanımlama ve Kullanma” dersinde ne öğreneceğim?
İlişkili verileri gruplamak için demet yapıları ve birim benzeri yapılar da dâhil olmak üzere yapılarla özel veri yapıları oluşturun. 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, 3 dersinin 1. dersidir.
“Yapıları Tanımlama ve Kullanma” 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
- Yapıları Tanımlama ve Kullanma
- Özel Türler için Numaralandırmalar
- Güçlü Örüntü Eşleştirme