Özet - Yazdırılabilir Nokta
Coddy'nin Rust Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 39 / 61.
Görev
KolayHata ayıklanabilen, güzel bir şekilde görüntülenebilen ve eşitlik için karşılaştırılabilen tam özellikli bir Point yapısı oluşturarak öğrendiğiniz tüm standart trait'leri bir araya getirelim!
Kodunuzu iki dosya halinde düzenleyeceksiniz:
point.rs: Genel (public)xveyalanlarına (her ikisi dei32) sahip genel birPointyapısı tanımlayın. Point yapınız üç yeteneği desteklemelidir:{:?}ile hata ayıklama (debug) yazdırma — bunu otomatik olarak türetin (derive){}ile(x, y)formatında kullanıcı dostu görüntüleme — bunustd::fmt::Displaykullanarak manuel olarak uygulayın==ile eşitlik karşılaştırması —PartialEqtrait'ini türetin
main.rs: Point modülünüzü dahil edin ve sağlanan girdileri kullanarak ikiPointörneği oluşturun. İlk noktayı hata ayıklama (debug) formatıyla yazdırarak, ikinci noktayı görüntüleme (display) formatıyla yazdırarak ve iki noktanın eşit olup olmadığını karşılaştırarak her üç yeteneği de gösterin.
Çıktınız, her üç trait yeteneğinin de iş başında olduğunu göstermelidir:
Debug: Point { x: {x1}, y: {y1} }
Display: ({x2}, {y2})
Equal: {true/false}Örneğin, 3, 5, 3, 5 girdileriyle:
Debug: Point { x: 3, y: 5 }
Display: (3, 5)
Equal: trueVe 10, 20, 5, 15 girdileriyle:
Debug: Point { x: 10, y: 20 }
Display: (5, 15)
Equal: falseDört girdi alacaksınız: ilk noktanın x ve y koordinatları, ardından ikinci noktanın x ve y koordinatları. Her birini i32 olarak ayrıştırın.
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ı hata ayıklama (debug) formatı {:?} kullanarak yazdır
// Format: "Debug: Point { x: ..., y: ... }"
// TODO: İkinci noktayı görüntüleme (display) formatı {} kullanarak yazdır
// Format: "Display: (..., ...)"
// TODO: İki noktayı karşılaştır ve sonucu yazdır
// Format: "Equal: true" veya "Equal: false"
}
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ı 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 Player