如何在 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 中创建动态内存数组是不可能的。