Menu
Coddy logo textTech

Ö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.

challenge icon

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çık Point ve x alanlarına (her ikisi de y) sahip, genel erişime açık bir i32 struct'ı 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: bunu std::fmt::Display kullanarak elle uygula
    • == ile eşitlik karşılaştırması: PartialEq türet
  • main.rs: point modülünü dahil et ve sağlanan girdileri kullanarak iki Point ö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: true

Girdiler 10, 20, 5, 15 olduğunda ise:

Debug: Point { x: 10, y: 20 }
Display: (5, 15)
Equal: false

Dö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

Kendi başına pratik yap: Online Rust derleyicisi