如何解决从另一个合约获取结构数组
我有 2 份合同。
contract Contract1{
struct Data {
uint data1;
string data2;
}
Data [] newData;
}
假设我在 newData 中有数据
import "./Contract1.sol";
contract Contract2{
Data storage newOne = newData[0];
}
我想访问上述 Contract1 中的结构数组。 如何从 Contract2 访问 Contract1?
解决方法
您可以使用 is
关键字延长合同。
子合同(在您的情况下为 Contract2
)可以访问所有 non-private 父(在您的情况下为 Contract1
)属性。
pragma solidity ^0.8;
import "./Contract1.sol";
contract Contract2 is Contract1 {
function foo() external {
Data storage newOne = newData[0];
// newOne.data1 = 1;
// newOne.data2 = 'hello';
}
}
编辑:请注意 newData[0]
正在尝试访问数组的索引 0
,但是在部署合约时,数组为空(没有索引 0)。您可以通过执行此函数来创建第一项(索引为 0 和虚拟数据):
function add() external {
newData.push(Data(1,'a'));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。