首页 > 解决方案 > 如何在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]

标签: matrixsolidity

解决方案


多维数组本质上是嵌套数组(包含其他数组的数组)。然而,这些在 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

如您所见,动态大小和固定大小可以混合在嵌套数组中。但是,必须提到关于嵌套数组的两个重要注意事项。

请参阅这些文章中的详细说明和示例:


推荐阅读