matrix - 如何在solidity中定义矩阵?
问题描述
我想在solidity中定义矩阵。首先,我尝试像这样定义 1×3 矩阵
contract test{
uint8[5] public uintArray = [1, 2, 3];
但是,这个数组只允许我取一个元素。
ex)uintArray(0) ---> 1
uintArray(1) ---> 2
uintArray(2) ---> 3
请教我如何在solidity中定义矩阵。
附加说明:我最后想使用更复杂的矩阵,所以我想知道像这样更复杂的矩阵。
[1 5 7
8 5 7
8 6 9]
解决方案
多维数组本质上是嵌套数组(包含其他数组的数组)。然而,这些在 Solidity 中以三种形式出现。我们在第一个示例中使用二维数组
T[k][k] : Two-Dimensional, Fixed-size
T[][] : Two-Dimensional, Dynamic-size
T[][k] or T[k][] : Two-Dimensional, Mixed-size
但是你会看到多维数组可以有任何级别的嵌套!这里有些例子
T[2][2][2] : Three-Dimensional, Fixed-Size (all k are the same)
T[2][8][4][12] : Four-Dimensional, Fixed-Sizes ( k‘s are of different values)
T[][][][][] : Five-Dimensional, Dynamic-Size
T[][3][2][][9][] : Six-Dimensional, Mixed-Size
如您所见,动态大小和固定大小可以混合在嵌套数组中。但是,必须提到关于嵌套数组的两个重要注意事项。
请参阅这些文章中的详细说明和示例: