Struct'lara Genel Bakış
Coddy'nin Rust Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 21 / 66.
Artık yapıların ne olduğunu anladığınıza göre, şimdi onları gerçekten nasıl oluşturacağınızı ve kullanacağınızı öğrenelim. Bu, iki adımı içerir: önce yapının yapısını tanımlamak, ardından onun örneklerini oluşturmak.
Bir yapı tanımlamak için struct anahtar sözcüğünü, ardından yapının adını ve süslü parantezlerin içindeki alanlarını kullanırsınız. Her alanın bir adı ve türü vardır:
struct User {
username: String,
active: bool,
}Bu, iki alan içeren bir User yapısı için bir şablon oluşturur: String türünde username ve bool türünde active.
Adlandırma kuralı: Rust'ta yapı adları PascalCase (UpperCamelCase olarak da adlandırılır) kullanılmalıdır; bu, her kelimenin büyük harfle başlaması anlamına gelir. Örneğin User, ProductItem veya ShoppingCart. Bu kurala uymazsanız Rust sizi uyarır.
Bir struct tanımladıktan sonra, her alan için değerleri belirterek onun örneklerini oluşturabilirsiniz:
let user1 = User {
username: String::from("alice"),
active: true,
};Yapı adını, ardından her alan adını, iki nokta üst üste işaretini ve değerini içeren süslü parantezleri sağladığınıza dikkat edin. Alanların sırasının tanım sırasıyla eşleşmesi gerekmez.
Bir struct örneğinin alanlarına erişmek için nokta gösterimini kullanın: örnek adını, ardından bir nokta ve alan adını yazın:
println!("Username: {}", user1.username);
println!("Active: {}", user1.active);Burada user1.username, user1 öğesinin username alanına erişir ve user1.active, active alanına erişir. Bu alan değerlerini normal bir değişkeni kullanacağınız her yerde kullanabilirsiniz.
Görev
KolayÜç girdi alacaksınız: bir ürün adı, bir fiyat (ondalık sayı olarak) ve bir stok miktarı (tam sayı olarak). Üç alana sahip bir Product yapısı tanımlayın: String türünde name, f64 türünde price ve i32 türünde stock. Ardından girdi değerlerini kullanarak bu yapının bir örneğini oluşturun ve ürün bilgilerini yazdırın.
Gereksinimler:
- Şu alanlara sahip bir
Productyapısı tanımlayın:name: String,price: f64vestock: i32 - İlk girdiyi ürün adı olarak okuyun
- İkinci girdiyi okuyun ve fiyat için
f64türüne dönüştürün - Üçüncü girdiyi okuyun ve stok miktarı için
i32türüne dönüştürün - Bu değerlerle
Productyapısının bir örneğini oluşturun - Ürün bilgilerini aşağıda gösterilen tam biçimde yazdırın
Girdi:
- İlk satır: Ürün adı (ör.
Laptop) - İkinci satır: Ondalık sayı olarak fiyat (ör.
999.99) - Üçüncü satır: Tam sayı olarak stok miktarı (ör.
15)
Çıktı:
- İlk satır:
Product: [name] - İkinci satır:
Price: $[price] - Üçüncü satır:
Stock: [quantity]
Kendin dene
use std::io;
// TODO: Product struct'ınızı burada tanımlayın
fn main() {
// Ürün adını oku
let mut name = String::new();
io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
// Fiyatı oku
let mut price_input = String::new();
io::stdin().read_line(&mut price_input).expect("Failed to read line");
let price: f64 = price_input.trim().parse().expect("Failed to parse price");
// Stok miktarını oku
let mut stock_input = String::new();
io::stdin().read_line(&mut stock_input).expect("Failed to read line");
let stock: i32 = stock_input.trim().parse().expect("Failed to parse stock");
// TODO: Girdi değerlerini kullanarak bir Product struct örneği oluşturun
// TODO: Ürün bilgilerini istenen formatta yazdırın
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1İleri Seviye Kontrol Akışı
'match' İfadesiBirden Çok Değeri EşleştirmeAralıkları Eşleştirme'if let' İfadesiİfade Olarak DöngülerÖzet - Basit Komut Ayrıştırıcı4Struct'lar ile Verileri Gruplama
Struct Nedir?Struct'lara Genel BakışStruct Alanlarına ErişmeMutable Struct'larFonksiyon Parametresi Olarak Struct'larTuple Struct'larÖzet - Bir Kitap Struct'ı Oluşturun7'Result' ile Hata Yönetimi
'Result' Nedir?'Result' ile 'match' Kullanımıis_ok() ve is_err()Kısayollar: unwrap ve expectSoru İşareti Operatörü '?'String'leri Sayılara DönüştürmeÖzet - Güvenli Bölme Fonksiyonu10Closures ve Anonim Fonksiyonlar
Closure Nedir?Basit Bir Closure TanımlamaParametreli Closure'larOrtamı YakalamakÖzet - Basit Toplayıcı Closure2Vektörlere Giriş
Vektör Nedir?Vektör Oluşturmapush ile Eleman EklemeVektör Elemanlarına ErişmeVektör Üzerinde YinelemeDeğiştirilebilir YinelemeEleman KaldırmaÖzet - Temel Skor Takipçisi5Hash Map'ler ile Anahtar-Değer Çiftleri
Hash Map Nedir?Bir Hash Map OluşturmaAnahtar-Değer Çiftleri EklemeDeğerlere ErişmeBir Hash Map Üzerinde GezinmeBir Değeri GüncellemeBir Çifti KaldırmaÖzet - Kelime Sayacı11Son Meydan Okumalar
Özet - Benzersiz ÖğelerÖzet - Kullanıcı Profili DoğrulayıcıÖzet - Not Özetleyici3Komut Satırı Yapılacaklar Listesi
Proje KurulumuGörev EklemeTüm Görevleri GörüntülemeGörev SilmeFinal Kodu6'Option' ile Yokluğu Yönetme
'Option' Nedir?'Option' ile 'match' Kullanımıis_some() ve is_none()Bir 'Option' Değerini Açmak (Unwrapping)expect MetoduVarsayılan Değer Sağlama: unwrap_orÖzet - Bir Eleman Bulma9String Dilimleri ve Daha Fazlası
String ve &strString Dilimleri OluşturmaFonksiyon Parametresi Olarak DilimlerDiğer DilimlerÖzet - İlk Kelimeyi BulmaKendi başına pratik yap: Online Rust derleyicisi