我看过 Substrate 教程中有关创建单独 Substrate 运行时模块的教程,链接在这里,以便重复使用功能。但我想知道是否有一种方法让一个自定义模块可以访问另一个自定义模块的存储或函数?
大致如下:
/// In ModuleA
pub type IndexType = u64;
decl_storage! {
trait Store for Module<T: Trait> as ModuleA {
pub MyIndexCount get(my_index_count): Option<IndexType>;
}
}
在ModuleB中,我需要做什么才能使用/包含ModuleA的功能,以及如何调用它?
/// In ModuleB
decl_module! {
pub struct Module<T: Trait> for enum Call where origin: T::Origin {
fn deposit_event<T>() = default;
pub fn edit_index(origin) -> Result {
let sender = ensure_signed(origin)?;
// --->>>> I want to read some storage from ModuleA whilst inside ModuleB
let c: IndexType = ReadStorageFromModuleA >>> my_index_count().ok_or("Storage Read Error: cannot get index")?;
// change storage in ModuleA from ModuleB
WriteToStorageInModuleA <MyIndexCount<T>>::put(&c + 1);
Ok(())
}
}
}
substrate
,是否有兴趣参与一个专门针对 Substrate、Polkadot 等的 Stack Exchange 问答网站?请查看 Area51 Substrate Proposal。 - q9f