Los módulos son una forma de agrupar código relacionado y de evitar conflictos de nombres, y en general están presentes en todos los proyectos de código, salvo en los más triviales.
La sintaxis es la siguiente:
mod my_module {
pub struct MyStruct {}
pub struct OtherClass {}
}
Fuera del ámbito del módulo, se hace referencia a los tipos que están encerrados en módulos anteponiendo al nombre del tipo la sintaxis de dos puntos dobles ::.
Como alternativa, y de forma más habitual, puedes colocar una directiva use al inicio del archivo (o dentro de un módulo) y entonces podrás usar los tipos sin el prefijo.
Dentro del mismo módulo no hace falta calificar los nombres de los tipos.
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 {};
}
}
}
Puedes darle un alias a un módulo o a un tipo con la sintaxis use core::array::ArrayTrait as Arr; y luego usar el alias en cualquier lugar donde pudieras usar el módulo o el tipo.
La gerencia está empezando a aplicar principios darwinianos a un proyecto de auto a control remoto. Los desarrolladores se dividieron en dos equipos, Red y Blue, y tienen la tarea de mejorar el diseño de forma independiente entre sí. No necesitan preocuparse por las decisiones de diseño del otro equipo. Te han pedido que le eches un vistazo al código y veas cómo puedes combinar mejor los dos esfuerzos con fines de prueba.
Por favor, usa módulos para expresar mejor la intención del código.
Actualmente, los tipos importantes como Motor y Telemetry, sin mencionar al propio RemoteControlCar, llevan como prefijo el color del equipo correspondiente, <Color>RemoteControlCarTeam.
El único propósito de ese prefijo es permitir que tipos con el mismo nombre coexistan en el programa.
Eso se expresa mejor usando un módulo.
Verás que, para estos fines, un módulo tiene ventajas sobre poner prefijos a los tipos.
La gerencia exige que en las definiciones los equipos se llamen «Red Remote Control Car Team» y «Blue Remote Control Car Team», y que incluso estos nombres largos se usen en el código mismo. Sin embargo, los nombres son bastante engorrosos a la hora de referirte a los equipos.
Encuentra la manera de usar los identificadores más cortos «Red» y «Blue» dentro del módulo en el que construirás los autos.
Regístrate en Exercism para aprender y dominar Cairo con 25 conceptos68 ejercicios y mentoría humana real, todo gratis.