包括运行时模块中声明的自定义锈蚀类型的示例有几个,可以应用Polkadot接口这里。然而,我不知道如何编码元组。对于那些计划在代码和运行时API中使用元组用于polkadot-js的人来说,情况也是如此。
下面是在基板运行时模块中声明它的方式:
// tuple (struct)
pub type Code = u16;
pub type Type = u16;
pub struct Tuple(Code, Type);
// Complex struct using tuple
pub struct Record<T::AccountId,Tuple> {
pub address: T::AccountId,
pub tuple_values: Tuple,
}
// Storage
Record get(record):
map T::AccountId => Option<Record<T::AccountId,Tuple>>;我假设我会在Polkadot设置的Developer选项卡中添加类似的内容,但我不知道这是否是正确的语法。
{
"Code": "u16",
"Type": "u16",
"Tuple": ["Code", "Type"],
"Record": {
"address": "AccountId",
"tuple_values": "Tuple"
}
}发布于 2019-10-14 17:34:12
元组、元组结构和命名结构都是以相同的方式编码的。来自https://docs.substrate.io/v3/advanced/scale-codec#tuples
Tuples一个固定大小的值系列,每个值都有可能不同但预先确定的固定类型.这只是每个编码值的级联。 … 对于结构来说,值是命名的,但这与编码无关(名称只被忽略--只是顺序问题)。
所以在你的例子中,像这样的东西会起作用的:
{
"Code": "u16",
"Type": "u16",
"Tuple": {
"bogus_name_1": "Code",
"bogus_name_2": "Type"
},
"Record": {
"address": "AccountId",
"tuple_values": "Tuple"
}
}https://stackoverflow.com/questions/58378261
复制相似问题