在Solidity中,您可以使用array.length ++增加数组的大小,以便为新成员腾出空间.但我收到一个错误:
Value must be an lvalue
Run Code Online (Sandbox Code Playgroud)
您可以使用"arrayname.length =;"调整存储中的动态数组(即在合同级别声明的数组),但如果您收到"左值"错误,则可能会出现两个错误之一.您可能正在尝试在内存中调整数组大小,或者您可能正在尝试调整非动态数组的大小.
int8[] memory somearray; // CASE 1
somearray.length++; // illegal
int8[5] somearray; // CASE 2
somearray.length++; // illegal
Run Code Online (Sandbox Code Playgroud)
重要说明:在Solidity中,数组是从您可能用于声明它们的方式向后声明的.如果你有一个带有动态和一些非动态组件的> = 2D数组,你可能会违反#2而不理解为什么.另请注意,数组是以"正常"方式访问的.以下是这种"落后"宣言范式的一些例子:
int8[][5] somearray; // This is 5 dyn arrays, NOT a dyn array-of-arrays w/len=5
// so...
somearray[4]; // the last dynamic array
somearray[1][12]; // the 13th element of the second dynamic array
// thus...
somearray.length++; // illegal. This array has length 5. Always.
somearray[0].length++;// legal
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3604 次 |
| 最近记录: |