解释这个 solidity 声明

Explain this solidity statement

我是 solidity 的新手,我遇到了以下声明:

address[] memory path = new address[](2);

有人请帮我分解一下。具体来说,new address[](2) 是做什么的? TIA

它初始化名为 path

的新 dynamic-length 数组变量
  • 项的类型为 address
  • 数组存储在 memory、non-persistent 数据位置,只能在交易期间访问

表达式 new address[](2) 的 right-side 用 2 个空项初始化数组。

在 Solidity 中,dynamic-length 和 fixed-length 数组之间存在差异。所以如果你的函数需要 return array[] (dynamic-length),编译器不允许你 return array[2] (fixed-length) .

由于内存的结构,无法调整内存中数组的大小。 (但是您可以调整存储阵列的大小。)因此,当您需要 return 一个 dynamic-length 阵列时,可以使用这种方法。您需要首先使用预定义数量的空值在内存中对其进行初始化,然后重写这些值。有关代码示例,请参阅 this post