Özet - Shape Enum
Coddy'nin Rust Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 18 / 61.
Görev
KolayHer biri kendi boyutlarını saklayan farklı şekilleri temsil etmek için bir enum kullanan bir geometri hesaplayıcısı oluşturalım. Shape enum'unuz, tek bir türün farklı veri yapılarını nasıl tutabileceğini ve metotlar aracılığıyla birleşik davranış sağlayabileceğini gösterecek.
Kodunuzu düzenlemek için iki dosya oluşturacaksınız:
shape.rs: İki varyanta sahip herkese açık birShapeenum'u tanımlayın:Circle: yarıçapı temsil eden tek birf64değeri tutar (demet söz dizimi)Rectangle: adlandırılmış alanları tutar:width(f64) veheight(f64)
areametodu uygulayın. Daireler için π değeri olarak3.14159kullanın.main.rs: shape modülünü dahil edin, sağlanan girdileri kullanarak her şekil varyantından bir örnek oluşturun ve her şeklin alanını yazdırın.
area metodunuz bir f64 döndürmelidir. Eşleştirme yaparken, boyutlarını çıkarmak ve uygun formülü uygulamak için her varyantın iç yapısını açı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, daire yarıçapı 5.0 ve genişliği 4.0, yüksekliği 6.0 olan bir dikdörtgen için çıktı şöyle olur:
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: radius kullanarak bir Circle şekli oluştur
// TODO: width ve height kullanarak bir Rectangle şekli oluştur
// TODO: Her şeklin alanını bir ondalık basamakla yazdır
// Format: "Circle area: {area}" and "Rectangle area: {area}"
}
Nesne Yönelimli Programlama 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 PlayerKendi başına pratik yap: Online Rust derleyicisi