如何设置StorageValue的默认值?
How to set the default value for StorageValue?
我正在尝试为 StorageValue 设置默认值,但出现错误:
#[pallet::type_value]
pub fn DefaultRegistrationFees<T: Config>() -> u128 { 100u128 }
#[pallet::storage]
#[pallet::getter(fn profile_registration_fees)]
pub type RegistrationFee<T> = StorageValue<_, u128, OptionQuery, DefaultRegistrationFees<T>>;
错误:
lib.rs(81, 12):特性 frame_support::storage::types::QueryKindTrait<u128, pallet::DefaultRegistrationFees<T>>
没有为 frame_support::pallet_prelude::OptionQuery
实现
https://substrate.dev/docs/en/knowledgebase/runtime/storage#default-values
我猜你想写:
pub type RegistrationFee<T> = StorageValue<_, u128, ValueQuery, DefaultRegistrationFees<T>>;
所以要使用 ValueQuery
而不是 OptionQuery
。
存储的 QueryKind
泛型决定了当存储没有价值时应该如何处理存储。使用 OptionQuery
,当存储中没有值时,方法 get
将 return None
。使用 ValueQuery
,当存储中没有值时,方法 get
将 return 使用通用 OnEmpty
配置的值。
所以在配置特定的默认值时,要使用ValueQuery
.
我正在尝试为 StorageValue 设置默认值,但出现错误:
#[pallet::type_value]
pub fn DefaultRegistrationFees<T: Config>() -> u128 { 100u128 }
#[pallet::storage]
#[pallet::getter(fn profile_registration_fees)]
pub type RegistrationFee<T> = StorageValue<_, u128, OptionQuery, DefaultRegistrationFees<T>>;
错误:
lib.rs(81, 12):特性 frame_support::storage::types::QueryKindTrait<u128, pallet::DefaultRegistrationFees<T>>
没有为 frame_support::pallet_prelude::OptionQuery
https://substrate.dev/docs/en/knowledgebase/runtime/storage#default-values
我猜你想写:
pub type RegistrationFee<T> = StorageValue<_, u128, ValueQuery, DefaultRegistrationFees<T>>;
所以要使用 ValueQuery
而不是 OptionQuery
。
存储的 QueryKind
泛型决定了当存储没有价值时应该如何处理存储。使用 OptionQuery
,当存储中没有值时,方法 get
将 return None
。使用 ValueQuery
,当存储中没有值时,方法 get
将 return 使用通用 OnEmpty
配置的值。
所以在配置特定的默认值时,要使用ValueQuery
.