如何在 Solidity 中创建动态内存阵列?
How to create a dynamic memory array in Solidity?
我正在从合同创建 ERC777,但我在使用默认运算符时遇到了问题。我的代码编译正常,但是当我尝试部署它时它不起作用。
这是我的代码的简化版本
contract Amacoin is ERC777 {
address public amaclicker;
constructor(address[] memory defaultOperators) ERC777("Amacoin", "AMAC", defaultOperators) {
amaclicker = defaultOperators[0];
}
}
contract Amaclicker {
Amacoin public amacoin;
constructor() {
address[] memory defaultOperators;
defaultOperators[0] = address(this);
amacoin = new Amacoin(defaultOperators);
}
}
根据我的测试,defaultOperators[0] = address(this);
不起作用。同样,仅将 [address(this)]
作为 Amacoin 或 defaultOperators 的参数也不起作用。
编辑:我仍然没有找到解决方案,但我所做的解决方法是创建一个状态变量,然后在创建 Amacoin 后将其删除
试试这个方法。这应该有效。
address[] memory defaultOperators = new address[](1);
defaultOperators[0] = address(this);
根据你的问题,在 solidity 中创建动态内存数组是不可能的。
我正在从合同创建 ERC777,但我在使用默认运算符时遇到了问题。我的代码编译正常,但是当我尝试部署它时它不起作用。
这是我的代码的简化版本
contract Amacoin is ERC777 {
address public amaclicker;
constructor(address[] memory defaultOperators) ERC777("Amacoin", "AMAC", defaultOperators) {
amaclicker = defaultOperators[0];
}
}
contract Amaclicker {
Amacoin public amacoin;
constructor() {
address[] memory defaultOperators;
defaultOperators[0] = address(this);
amacoin = new Amacoin(defaultOperators);
}
}
根据我的测试,defaultOperators[0] = address(this);
不起作用。同样,仅将 [address(this)]
作为 Amacoin 或 defaultOperators 的参数也不起作用。
编辑:我仍然没有找到解决方案,但我所做的解决方法是创建一个状态变量,然后在创建 Amacoin 后将其删除
试试这个方法。这应该有效。
address[] memory defaultOperators = new address[](1);
defaultOperators[0] = address(this);
根据你的问题,在 solidity 中创建动态内存数组是不可能的。