如何在 decl_storage 中使用构建?

问题描述

在基材托盘中,build 常用于 decl_storage。

例如

pub ReferendumCount get(fn referendum_count) build(|_| 0 as ReferendumIndex): ReferendumIndex;

build 方法有什么作用,如何使用以及何时使用?

解决方法

来自substrate.dev

decl_storage 宏的配置​​扩展允许您在链规范中配置模块的创世存储状态,构建扩展允许您在模块本身内执行相同的任务(这使您可以访问模块的私有功能) .与 config 一样,构建扩展接受单个参数,但在这种情况下,该参数始终是必需的,并且必须是一个闭包,它本质上是一个函数。构建闭包将使用单个参数调用,该参数的类型将是托盘的 GenesisConfig 类型(这使您可以轻松访问 GenesisConfig 类型的所有属性)。您可以将构建扩展与配置扩展一起用于单个存储项;在这种情况下,托盘的 GenesisConfig 类型将具有与使用 config 设置的属性相对应的属性,其值将在链规范中设置,但它将是构建闭包返回的值,将用于设置存储项的创世价值。

,

build($expr) 的作用是将构建逻辑添加到创世配置构建中。

您可以通过阅读宏文档了解更多信息,我会推荐与您的问题相关的这些要点

您可以在相同的文档中找到示例