构造函数
构造函数是一种特殊类型的函数,只在部署合约时运行一次,可用于初始化合约的状态。你的合约不能有一个以上的构造函数,而且构造函数必须使用 #[constructor]
属性注释。此外,一个好的做法是将该函数命名为 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);
}
}