作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何将新的空 Parent 实例添加到以下代码示例中的父项列表中?我不断得到
UnimplementedFeatureError: Copying of type struct Test.Child memory[] memory
to storage not yet supported.
contract Test {
struct Child { }
struct Parent { Child[] children; }
Parent[] parents;
function test() {
parents.push(Parent(new Child[](0)));
}
}
最佳答案
你真的不能用动态数组做你想做的事情。你需要稍微改变你的方法才能让它工作。
contract Test {
struct Child { }
struct Parent {
mapping(uint => Child) children;
uint childrenSize;
}
Parent[] parents;
function testWithEmptyChildren() public {
parents.push(Parent({childrenSize: 0}));
}
function testWithChild(uint index) public {
Parent storage p = parents[index];
p.children[p.childrenSize] = Child();
p.childrenSize++;
}
}
Parent.childrenSize
如果您需要遍历
Parent.children
在你契约(Contract)的其他地方。
parents
的大小数组并使用 Solidity 的默认零值。
contract Test {
struct Child { }
struct Parent { Child[] children; }
Parent[] parents;
function test() public {
parents.length++;
Parent storage p = parents[parents.length - 1];
Child memory c;
p.children.push(c);
}
}
关于solidity - 尚不支持将 struct memory[] 类型的内存复制到存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49345903/
我需要面对一个架构/设计决策。 我正在开发一个 Cordova/Meteor 应用程序,它具有独特的入门体验。新用户会看到一个向导,引导他们完成填写某些表单的步骤。 向导流程会等到最后一步才能注册用户
我想通过 psql 在空数据库中加载一些 SQL 函数: psql -d my_database -f fuctions.sql --set ON_ERROR_STOP=1 我使用 --set ON_
我是一名优秀的程序员,十分优秀!