Διαδρομές
/
Cairo
Cairo
/
Ασκήσεις
/
Κόκκινο εναντίον Μπλε: Στυλ Δαρβίνου
Κόκκινο εναντίον Μπλε: Στυλ Δαρβίνου

Κόκκινο εναντίον Μπλε: Στυλ Δαρβίνου

Άσκηση εκμάθησης

Εισαγωγή

Αρθρώματα

Τα αρθρώματα είναι ένας τρόπος να ομαδοποιείς σχετικό κώδικα, για να αποφεύγεις συγκρούσεις ονομάτων, και γενικά υπάρχουν σε όλες τις βάσεις κώδικα εκτός από τις πιο απλές.

Η σύνταξη είναι η εξής:

mod my_module {
    pub struct MyStruct {}

    pub struct OtherClass {}
}

Έξω από το πεδίο εφαρμογής του αρθρώματος, για να αναφερθείς σε τύπους που περικλείονται σε αρθρώματα, χρησιμοποιείς τη σύνταξη με τη διπλή άνω τελεία :: πριν από το όνομα του τύπου. Εναλλακτικά, και πιο συχνά, μπορείς να τοποθετήσεις μια οδηγία use στην κορυφή του αρχείου (ή μέσα σε ένα άρθρωμα) και τότε μπορείς να χρησιμοποιήσεις τους τύπους χωρίς το πρόθεμα. Μέσα στο ίδιο άρθρωμα δε χρειάζεται να προσδιορίσεις τα ονόματα των τύπων.

mod my_module {
    #[derive(Drop)]
    pub struct MyStruct {}

    pub struct Foo {}

    #[generate_trait]
    pub impl FooImpl of FooTrait {
        fn bar() {
            let baz = MyStruct {};
        }
    }
}

#[derive(Drop)]
pub struct Qux {}

#[generate_trait]
impl QuxImpl of QuxTrait {
    fn box() {
        let nux = my_module::MyStruct {};
    }
}

mod other_module {
    use super::my_module::*;

    #[derive(Drop)]
    pub struct Tix {}

    #[generate_trait]
    pub impl TixImpl of TixTrait {
        fn jeg() {
            let lor = MyStruct {};
        }
    }
}

Μπορείς να δώσεις ψευδώνυμο σε ένα άρθρωμα ή έναν τύπο με τη σύνταξη use core::array::ArrayTrait as Arr; και στη συνέχεια να χρησιμοποιήσεις το ψευδώνυμο οπουδήποτε θα μπορούσε να χρησιμοποιηθεί το άρθρωμα ή ο τύπος.

Οδηγίες

Η διοίκηση αρχίζει να εφαρμόζει δαρβίνειες αρχές σε ένα έργο τηλεκατευθυνόμενου αυτοκινήτου. Οι προγραμματιστές έχουν χωριστεί σε δύο ομάδες, Red και Blue, και τους έχει ανατεθεί να βελτιώσουν τον σχεδιασμό ανεξάρτητα η μία από την άλλη. Δεν χρειάζεται να ασχοληθούν με αποφάσεις σχεδιασμού της άλλης ομάδας. Σου ζητήθηκε να ρίξεις μια ματιά στον κώδικα και να δεις πώς μπορείς να συνδυάσεις καλύτερα τις δύο προσπάθειες για λόγους δοκιμών.

1. Βρες έναν πιο κατάλληλο τρόπο να απομονώσεις τον κώδικα των δύο ομάδων

Χρησιμοποίησε modules για να εκφράσεις καλύτερα την πρόθεση του κώδικα.

Αυτή τη στιγμή, σημαντικοί τύποι όπως οι Motor και Telemetry, για να μην αναφέρουμε τον ίδιο τον RemoteControlCar, έχουν ως πρόθεμα το χρώμα της αντίστοιχης ομάδας, <Color>RemoteControlCarTeam. Ο μόνος σκοπός του προθέματος είναι να επιτρέψει σε τύπους με το ίδιο όνομα να συνυπάρχουν στο πρόγραμμα. Αυτό εκφράζεται καλύτερα με τη χρήση ενός module. Θα δεις ότι, για αυτούς τους σκοπούς, ένα module έχει πλεονεκτήματα σε σχέση με το να βάζεις πρόθεμα στους τύπους.

2. Απλοποίησε το σύστημα ονοματοδοσίας

Η διοίκηση απαιτεί οι ομάδες να ονομάζονται "Red Remote Control Car Team" και "Blue Remote Control Car Team" στους ορισμούς, και αυτά τα μεγάλα ονόματα να χρησιμοποιούνται ακόμη και μέσα στον ίδιο τον κώδικα. Ωστόσο, τα ονόματα είναι μάλλον δυσκίνητα όταν αναφέρεσαι στις ομάδες.

Βρες έναν τρόπο να χρησιμοποιήσεις τους συντομότερους αναγνωριστές "Red" και "Blue" μέσα στο module στο οποίο θα κατασκευάσεις τα αυτοκίνητα.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Cairo Exercism

Έτοιμος να ξεκινήσεις την άσκηση Κόκκινο εναντίον Μπλε: Στυλ Δαρβίνου;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Cairo με 25 έννοιες68 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.