Özet - Shape Enum
Coddy'nin Rust Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 18 / 61.
Görev
KolayFarklı şekilleri temsil etmek için bir enum kullanan ve her birinin kendi boyutlarını sakladığı bir geometri hesaplayıcısı oluşturalım. Shape enum yapınız, tek bir türün nasıl farklı veri yapılarını barındırabileceğini ve metotlar aracılığıyla nasıl birleşik bir davranış sunabileceğini gösterecektir.
Kodunuzu düzenlemek için iki dosya oluşturacaksınız:
shape.rs: İki varyantı olan genel birShapeenum yapısı tanımlayın:Circle— yarıçapı temsil eden tek birf64tutar (tuple sözdizimi)Rectangle— isimlendirilmiş alanlar tutar:width(f64) veheight(f64)
areametodu uygulayın. Daireler için π olarak3.14159değerini kullanın.main.rs: Şekil modülünüzü dahil edin, sağlanan girdileri kullanarak her bir şekil varyantından birer örnek oluşturun ve her şeklin alanını yazdırın.
area metodunuz bir f64 döndürmelidir. Eşleştirme yaparken, her varyantın boyutlarını çıkarmak için yapısını bozun (destructure) ve uygun formülü uygulayın:
- Daire alanı:
π × radius² - Dikdörtgen alanı:
width × height
Çıktınız, her şeklin alanını kendi satırında ve tam olarak bir ondalık basamakla göstermelidir:
Circle area: {area}
Rectangle area: {area}Örneğin, 5.0 daire yarıçapı ve 4.0 genişliğinde, 6.0 yüksekliğinde bir dikdörtgen ile çıktı şöyle olacaktır:
Circle area: 78.5
Rectangle area: 24.0Üç girdi alacaksınız: dairenin yarıçapı, dikdörtgenin genişliği ve dikdörtgenin yüksekliği.
Kendin dene
mod shape;
use shape::Shape;
fn main() {
// Girdileri oku
let mut radius_input = String::new();
std::io::stdin().read_line(&mut radius_input).expect("Failed to read line");
let radius: f64 = radius_input.trim().parse().expect("Invalid number");
let mut width_input = String::new();
std::io::stdin().read_line(&mut width_input).expect("Failed to read line");
let width: f64 = width_input.trim().parse().expect("Invalid number");
let mut height_input = String::new();
std::io::stdin().read_line(&mut height_input).expect("Failed to read line");
let height: f64 = height_input.trim().parse().expect("Invalid number");
// TODO: Yarıçapı kullanarak bir Circle (Daire) şekli oluşturun
// TODO: Genişlik ve yüksekliği kullanarak bir Rectangle (Dikdörtgen) şekli oluşturun
// TODO: Her şeklin alanını virgülden sonra bir basamak olacak şekilde yazdırın
// Format: "Circle area: {area}" ve "Rectangle area: {area}"
}
Object Oriented Programming bölümündeki tüm dersler
1Metotlar ve Davranış
Uygulama Bloklarına GirişSelf ParametresiDeğiştirilebilir Metotlarİlişkili FonksiyonlarBirden Fazla Uygulama BloğuMetot ZincirlemeÖzet - Dikdörtgen Eylemleri4Proje: Sanal Evcil Hayvan
Evcil Hayvanı TanımlamaEvcil Hayvanı Besleme2Kapsülleme ve Modüller
Modül TemelleriPublic Anahtar KelimesiPrivate AlanlarGetter'larSetter'larÖzet - Güvenli Kasa5Generic Yapılar
Generic Struct'larGeneric MetotlarÇoklu Generic TürlerGeneric FonksiyonlarÖzet - Koordinat Noktası8Sınırlandırıcı Olarak Trait'ler
Trait Sınırlandırıcı SözdizimiÇoklu SınırlandırıcılarWhere CümleciğiTrait'ler ile Tip DöndürmeÖzet - Generic Yazıcı11Rust'ta Tasarım Kalıpları
Newtype KalıbıKompozisyonDrop Trait'iFrom ve IntoÖzet - Smart Pointer Mock3İleri Seviye Enum'lar
Veri İçeren Enum'larEnum MetotlarıVeri Varyantlarını EşlemeOption Enum'ına Yeniden BakışÖzet - Shape Enum6Trait Tanımlama
Trait Nedir?Traitleri UygulamaVarsayılan UygulamalarVarsayılanları Geçersiz KılmaParametreli TraitlerÖzet - Media Player