类型错误:成员"length"是只读的,不能用于调整数组大小



我使用的是这个版本的solid,pragma solidity >=0.4.22 <0.9.0;

当我编译truffle时,我得到这个TypeError: Member "length"。当我将版本更改为0.4.0时,错误消失了,但我不能使用这个版本。我需要使用这个pragma solidity >=0.4.22 <0.9.0;

错误如下:

TypeError: Member "length" is read-only and cannot be used to resize arrays.
--> project:/contracts/Ballot1.sol:23:9:
|
23 |         proposals.length = _numProposal;
|         ^^^^^^^^^^^^^^^^
Compilation failed. See above.

从Solidity v0.6.0起,你可以使用像proposals[start:end]这样的数组切片(注意:它只支持calldata数组)

否则,我认为你可能需要像这样创建一个数组的副本:

function slice(
uint256 start,
uint256 end,
uint256[] memory proposals
) public pure returns (uint256[] memory) {
uint256[] memory result;
uint256 idx = 0;
for (uint256 i = start; i < end; i++) {
result[idx] = proposals[i];
idx++;
}
return result;
}

注意,如果你有一个大数组,这个操作可能会非常昂贵。

相关内容

  • 没有找到相关文章

最新更新