构造函数

构造函数是一种特殊类型的函数,只在部署合约时运行一次,可用于初始化合约的状态。你的合约不能有一个以上的构造函数,而且构造函数必须使用 #[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);
    }
}

访问 Voyager 上的合约,或在 Remix 中尝试它。

Last change: 2023-10-12, commit: 90aa7c0