Tuple Struct'lar
Coddy'nin Rust Journey'sinin Logic & Flow bölümünün bir parçası — ders 25 / 66.
Normal struct'lar isimlendirilmiş alanlar kullanırken, Rust tuple struct'lar adı verilen başka bir tür sunar. Bunlar, her bir alanı ayrı ayrı isimlendirmenize gerek kalmadığında özel türler oluşturmak için daha kısa bir yol sağlar.
Bir tuple struct, yeni bir tür oluşturmanın avantajlarını bir demetin (tuple) basitliğiyle birleştirir. Bunu, struct anahtar kelimesinden sonra tür adını ve parantez içindeki alan türlerini kullanarak tanımlarsınız:
struct Color(i32, i32, i32);Bu, RGB renk değerlerini temsil eden üç i32 değeri tutan bir Color türü oluşturur. Normal struct'ların aksine, alan adlarını belirtmezsiniz - değerlere tıpkı demetlerde (tuples) olduğu gibi konumlarına göre erişirsiniz.
Bir tuple struct örneği oluşturmak için, parantez içinde değerler sağlarsınız:
let red = Color(255, 0, 0);Alan dizinini içeren nokta notasyonunu kullanarak tekil alanlara erişebilirsiniz: red.0 size ilk değeri verir, red.1 ikincisini ve bu şekilde devam eder.
Görev
KolayÜç girdi alacaksınız: bir kırmızı değer (tam sayı olarak), bir yeşil değer (tam sayı olarak) ve bir mavi değer (tam sayı olarak). RGB renk bileşenlerini temsil eden üç i32 değeri tutan bir Color demet yapısı (tuple struct) tanımlayın. Girdi değerlerini kullanarak bu demet yapısının bir örneğini oluşturun, ardından indeks notasyonunu kullanarak her bir renk bileşenine erişin ve yazdırın.
Gereksinimler:
- Üç
i32alanına sahip birColordemet yapısı (tuple struct) tanımlayın - İlk girdiyi okuyun ve kırmızı değer için
i32türüne dönüştürün - İkinci girdiyi okuyun ve yeşil değer için
i32türüne dönüştürün - Üçüncü girdiyi okuyun ve mavi değer için
i32türüne dönüştürün - Bu değerlerle
Colordemet yapısının bir örneğini oluşturun - İndeksleri (0, 1, 2) kullanarak nokta notasyonu ile her bir alana erişin ve renk bilgilerini aşağıda gösterilen tam formatta yazdırın
Girdi:
- İlk satır: Tam sayı olarak kırmızı değer (örneğin,
255) - İkinci satır: Tam sayı olarak yeşil değer (örneğin,
128) - Üçüncü satır: Tam sayı olarak mavi değer (örneğin,
0)
Çıktı:
- İlk satır:
Red: [red_value] - İkinci satır:
Green: [green_value] - Üçüncü satır:
Blue: [blue_value]
Kopya kağıdı
Bir tuple struct, isimlendirilmiş alanları olmayan bir struct'tır. Yeni bir tür oluşturmanın avantajlarını bir demetin (tuple) basitliğiyle birleştirir.
Bir tuple struct'ı, struct anahtar kelimesini ve ardından tür adını ve parantez içindeki alan türlerini kullanarak tanımlayın:
struct Color(i32, i32, i32);Parantez içinde değerler sağlayarak bir örnek (instance) oluşturun:
let red = Color(255, 0, 0);Alan indeksi ile nokta notasyonunu kullanarak alanlara erişin:
red.0 // ilk değer
red.1 // ikinci değer
red.2 // üçüncü değerKendin dene
use std::io;
// TODO: Color demet yapınızı (tuple struct) burada tanımlayın
fn main() {
// Kırmızı değerini oku
let mut red_input = String::new();
io::stdin().read_line(&mut red_input).expect("Failed to read line");
let red: i32 = red_input.trim().parse().expect("Invalid input");
// Yeşil değerini oku
let mut green_input = String::new();
io::stdin().read_line(&mut green_input).expect("Failed to read line");
let green: i32 = green_input.trim().parse().expect("Invalid input");
// Mavi değerini oku
let mut blue_input = String::new();
io::stdin().read_line(&mut blue_input).expect("Failed to read line");
let blue: i32 = blue_input.trim().parse().expect("Invalid input");
// TODO: Giriş değerlerini kullanarak bir Color demet yapısı örneği oluşturun
// TODO: İndeks notasyonunu kullanarak her bir renk bileşenine erişin ve yazdırın
// Format: Red: [değer], Green: [değer], Blue: [değer]
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Logic & Flow 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 Bulma