Alıştırma: Asansör Olayları

Bir asansör kontrol sistemindeki bir olayı temsil etmek için bir veri yapısı oluşturacağız. Çeşitli olayları yapılandırmak için türleri ve fonksiyonları tanımlamak size kalmış. Türlerin {:?} ile biçimlendirilmesine izin vermek için #[derive(Debug)] kullanın.

Bu alıştırma yalnızca, main’in hatasız çalışması için veri yapıları oluşturmayı ve doldurmayı gerektirir. Kursun bir sonraki kısmı bu yapılardan veri almayı kapsayacaktır.

#![allow(dead_code)]

#[derive(Debug)]
/// Asansör sisteminde kontrolörün tepki vermesi gereken bir olay.
enum Event {
    // TODO: gerekli değişkeleri (variant) ekle
}

/// Bir seyahat yönü.

#[derive(Debug)]
enum Direction {
    Up,
    Down,
}

/// Kabin verilen kata ulaşmış durumda.
fn car_arrived(floor: i32) -> Event {
    todo!()
}

/// Kabin kapıları açılmış durumda.
fn car_door_opened() -> Event {
    todo!()
}

/// Kabin kapıları kapanmış durumda.
fn car_door_closed() -> Event {
    todo!()
}

/// Verilen kattaki asansör lobisinde yön düğmesine basıldı.
fn lobby_call_button_pressed(floor: i32, dir: Direction) -> Event {
    todo!()
}

/// Asansör kabininde bir kat düğmesine basıldı.
fn car_floor_button_pressed(floor: i32) -> Event {
    todo!()
}

fn main() {
    println!(
        "Zemin kattaki bir yolcu yukarı düğmesine basmış durumda: {:?}",
        lobby_call_button_pressed(0, Direction::Up)
    );
    println!("Kabin zemin kata ulaşmış durumda: {:?}", car_arrived(0));
    println!("Kabin kapısı açıldı: {:?}", car_door_opened());
    println!(
        "Bir yolcu 3. katın düğmesine basmış durumda: {:?}",
        car_floor_button_pressed(3)
    );
    println!("Kabin kapısı kapandı: {:?}", car_door_closed());
    println!("Kabin 3. kata ulaşmış durumda: {:?}", car_arrived(3));
}
This slide and its sub-slides should take about 15 minutes.
  • Eğer öğrenciler alıştırmanın en üstündeki #![allow(dead_code)] satırını sorarlarsa, bunun nedeni Event türüyle yaptığımız tek şeyin onu ekrana yazdırmak olmasıdır. Derleyicinin ölü kodu (dead code) kontrol etme biçimindeki bir ayrıntı nedeniyle, bu durum kodun kullanılmadığını sanmasına yol açar. Öğrenciler bu satırı bu alıştırma özelinde görmezden gelebilirler.