Constructor
Los constructores son un tipo especial de función que se ejecuta solo una vez al implementar un contrato y se pueden usar para inicializar el estado del contrato. Su contrato no debe tener más de un constructor, y esa función constructora debe estar anotada con el atributo #[constructor]
. Además, una buena práctica consiste en denominar a esa función constructor
.
A continuación se muestra un ejemplo sencillo que demuestra cómo inicializar el estado de un contrato durante la implementación definiendo la lógica dentro de un constructor.
#[starknet::contract]
mod ExampleConstructor {
use starknet::ContractAddress;
#[storage]
struct Storage {
names: LegacyMap::<ContractAddress, felt252>,
}
// The constructor is decorated with a `#[constructor]` attribute.
// It is not inside an `impl` block.
#[constructor]
fn constructor(ref self: ContractState, name: felt252, address: ContractAddress) {
self.names.write(address, name);
}
}