Track
/
Cairo
Cairo
/
Esercizi
/
Rosso contro blu: stile Darwin
Rosso contro blu: stile Darwin

Rosso contro blu: stile Darwin

Esercizio di apprendimento

Introduzione

I moduli

I moduli sono un modo per raggruppare codice correlato, per evitare conflitti di nomi, e in generale sono presenti in tutte le basi di codice tranne le più banali.

La sintassi è la seguente:

mod my_module {
    pub struct MyStruct {}

    pub struct OtherClass {}
}

Al di fuori dello scope del modulo, i tipi racchiusi nei moduli si indicano anteponendo al nome del tipo la sintassi del doppio due punti ::. In alternativa, e più comunemente, puoi mettere una direttiva use all'inizio del file (o all'interno di un modulo), e poi i tipi si possono usare senza il prefisso. All'interno dello stesso modulo non c'è bisogno di qualificare i nomi dei tipi.

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 {};
        }
    }
}

Puoi assegnare un alias a un modulo o a un tipo con la sintassi use core::array::ArrayTrait as Arr; e poi usare l'alias ovunque si possa usare il modulo o il tipo.

Istruzioni

La direzione sta iniziando ad applicare principi darwiniani a un progetto di auto telecomandata. Gli sviluppatori sono stati divisi in due team, Red e Blue, e hanno il compito di migliorare il design in modo indipendente l'uno dall'altro. Non devono preoccuparsi delle decisioni di design dell'altro team. Ti è stato chiesto di dare un'occhiata al codice e vedere come combinare al meglio i due sforzi per scopi di test.

1. Trova un modo più appropriato per isolare il codice dei due team

Usa i moduli per esprimere meglio l'intenzione del codice.

Attualmente, tipi importanti come Motor e Telemetry, per non parlare di RemoteControlCar stesso, hanno come prefisso il colore del team appropriato <Color>RemoteControlCarTeam. L'unico scopo del prefisso è permettere che tipi con lo stesso nome coesistano nel programma. Lo si esprime meglio usando un modulo. Vedrai che, per questi scopi, un modulo ha dei vantaggi rispetto all'uso di prefissi sui tipi.

2. Semplifica il sistema di denominazione

La direzione richiede che i team siano chiamati «Red Remote Control Car Team» e «Blue Remote Control Car Team» nelle definizioni, e che questi nomi lunghi siano usati persino nel codice stesso. Tuttavia, i nomi sono piuttosto ingombranti quando si fa riferimento ai team.

Trova un modo per usare gli identificatori più brevi «Red» e «Blue» all'interno del modulo in cui costruirai le auto.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Cairo Exercism

Vuoi iniziare Rosso contro blu: stile Darwin?

Iscriviti a Exercism per imparare e padroneggiare Cairo con 25 concetti68 esercizi e il mentoring di persone reali, tutto gratis.