【发布时间】:2021-11-17 21:29:42
【问题描述】:
似乎是一个相对简单的问题,但我无法在文档或网上找到直接答案。
如果在 Solidity 中我请有一个带有结构映射的结构我试图在一个函数中返回它我到达了死胡同,如果我将它设置为“内存”的返回类型我收到一个错误,因为它是嵌套的,它必须声明为 'storage' 类型,但 'storage' 类型不能用于从函数返回数据:
pragma solidity ^0.8.0;
contract Nested {
struct Parent {
string parentPropertyA;
mapping(uint=>Child) childProperty;
}
struct Child {
string childPropertyA;
}
mapping(uint=>Parent) parents;
function getParent(uint parentId) public view returns (Parent memory) {
Parent memory parent = parents[parentId];
return parent;
}
}
TypeError: Types containing (nested) mappings can only be parameters or return variables of internal or library functions.
是否不支持嵌套结构映射返回,我必须将其展平才能返回?
我看到有关嵌套数组的问题,但想验证和验证!
【问题讨论】:
-
请编辑您的问题并分享导致此错误的代码。
-
@James Roeiter - 嘿,伙计,如果您发现我的解决方案有用,如果您能投票,那就太棒了。如果您需要任何进一步的说明,请告诉我。
-
@Issei - 我做了一些澄清并添加了一个代码示例。请问您知道如何解决吗?
标签: blockchain ethereum solidity smartcontracts