【问题标题】:How to set the default value for StorageValue?如何设置 StorageValue 的默认值?
【发布时间】:2021-09-13 07:28:18
【问题描述】:

我正在尝试为 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&lt;u128, pallet::DefaultRegistrationFees&lt;T&gt;&gt; 没有为 frame_support::pallet_prelude::OptionQuery 实现

https://substrate.dev/docs/en/knowledgebase/runtime/storage#default-values

【问题讨论】:

    标签: substrate polkadot


    【解决方案1】:

    我猜你想写:

    pub type RegistrationFee<T> = StorageValue<_, u128, ValueQuery, DefaultRegistrationFees<T>>;
    

    所以要使用ValueQuery 而不是OptionQuery

    存储的QueryKind 泛型决定了当存储中没有价值时应该如何处理存储。对于OptionQuery,当没有存储值时,方法get 将返回None。使用ValueQuery,当没有存储值时,方法get 将返回使用通用OnEmpty 配置的值。 所以在配置特定的默认值时,你要使用ValueQuery

    【讨论】:

      猜你喜欢
      • 2011-12-31
      • 2011-07-09
      • 2012-07-31
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      相关资源
      最近更新 更多