Özet - Yazdırılabilir Nokta
Coddy'nin Rust Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 39 / 61.
Görev
KolayÖğrendiğin tüm standart trait'leri bir araya getirerek hata ayıklanabilen, güzel bir şekilde görüntülenebilen ve eşitlik açısından karşılaştırılabilen, tüm özelliklere sahip bir Point struct'ı oluşturalım!
Kodunu iki dosyaya ayıracaksın:
point.rs: Genel erişime açıkPointvexalanlarına (her ikisi dey) sahip, genel erişime açık biri32struct'ı tanımla. Point şu üç özelliği desteklemelidir:{:?}ile hata ayıklama yazdırması. Bunu otomatik olarak türet{}biçiminde(x, y)ile kullanıcı dostu görüntüleme: bunustd::fmt::Displaykullanarak elle uygula==ile eşitlik karşılaştırması:PartialEqtüret
main.rs: point modülünü dahil et ve sağlanan girdileri kullanarak ikiPointörneği oluştur. İlk noktayı hata ayıklama biçimiyle yazdırarak, ikinci noktayı görüntüleme biçimiyle yazdırarak ve iki noktanın eşit olup olmadığını karşılaştırarak üç özelliğin tümünü göster.
Çıktın, üç trait özelliğinin de kullanımını göstermelidir:
Debug: Point { x: {x1}, y: {y1} }
Display: ({x2}, {y2})
Equal: {true/false}Örneğin, girdiler 3, 5, 3, 5 olduğunda:
Debug: Point { x: 3, y: 5 }
Display: (3, 5)
Equal: trueGirdiler 10, 20, 5, 15 olduğunda ise:
Debug: Point { x: 10, y: 20 }
Display: (5, 15)
Equal: falseDört girdi alacaksın: ilk noktanın x ve y koordinatları, ardından ikinci noktanın x ve y koordinatları. Her birini i32 olarak ayrıştır.
Kendin dene
mod point;
use point::Point;
fn main() {
// Dört girdi oku: x1, y1, x2, y2
let mut input = String::new();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let x1: i32 = input.trim().parse().expect("Invalid input");
input.clear();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let y1: i32 = input.trim().parse().expect("Invalid input");
input.clear();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let x2: i32 = input.trim().parse().expect("Invalid input");
input.clear();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let y2: i32 = input.trim().parse().expect("Invalid input");
// TODO: Girdileri kullanarak iki Point örneği oluştur
// TODO: İlk noktayı debug formatı {:?} kullanarak yazdır
// Biçim: "Debug: Point { x: ..., y: ... }"
// TODO: İkinci noktayı display formatı {} kullanarak yazdır
// Biçim: "Display: (..., ...)"
// TODO: İki noktayı karşılaştır ve sonucu yazdır
// Biçim: "Equal: true" veya "Equal: false"
}
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ı Besleme7Standart Trait'ler
Debug Trait'iDisplay Trait'iClone ve CopyEşitlik Trait'leriÖzet - Yazdırılabilir Nokta2Kapsü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