A modulokkal összetartozó kódot csoportosíthatsz, elkerülheted a névütközéseket, és általában minden nem triviális kódbázisban megtalálhatók.
A szintaxis a következő:
mod my_module {
pub struct MyStruct {}
pub struct OtherClass {}
}
A modul scope-ján kívül a modulba zárt típusokra úgy hivatkozunk, hogy a típusnév elé a dupla kettőspont :: szintaxist tesszük.
Másik lehetőség, és általában ez a szokásosabb, hogy a fájl elejére (vagy egy modulon belülre) egy use direktívát teszel, és akkor a típusok előtag nélkül használhatók.
Ugyanazon a modulon belül nincs szükség a típusnevek minősítésére.
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 {};
}
}
}
Egy modult vagy típust a use core::array::ArrayTrait as Arr; szintaxissal nevezhetsz át, majd az aliast bárhol használhatod, ahol a modult vagy a típust lehetne.
A vezetőség elkezdte a darwini elveket alkalmazni egy távirányítós autós projektre. A fejlesztőket két csapatra osztották, Red és Blue, és azzal a feladattal bízták meg őket, hogy egymástól függetlenül fejlesszék a tervezést. Nem kell törődniük a másik csapat tervezési döntéseivel. Téged arra kértek, hogy vess egy pillantást a kódra, és nézd meg, hogyan tudnád a legjobban összevonni a két erőfeszítést tesztelési célból.
Kérlek, használj modulokat, hogy pontosabban kifejezd a kód szándékát.
Jelenleg az olyan fontos típusok, mint a Motor és a Telemetry, sőt maga a RemoteControlCar is, a megfelelő csapat színének megfelelő <Color>RemoteControlCarTeam előtaggal vannak ellátva.
Az előtag egyetlen célja, hogy ugyanolyan nevű típusok létezhessenek egymás mellett a programban.
Ezt sokkal jobban kifejezi egy modul használata.
Látni fogod, hogy erre a célra a modul előnyösebb, mint a típusok előtagolása.
A vezetőség megköveteli, hogy a definíciókban a csapatok neve „Red Remote Control Car Team” és „Blue Remote Control Car Team” legyen, és hogy ezeket a hosszú neveket még magában a kódban is használni kell. A nevek azonban meglehetősen nehézkesek, amikor a csapatokra hivatkozunk.
Találj módot arra, hogy a rövidebb „Red” és „Blue” azonosítókat használd abban a modulban, amelyben az autókat építed majd.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Cairo nyelvet 25 fogalom68 feladat segítségével, valódi emberi mentorálással, mindez ingyen.