solidity学习——二维数组

环境配置:
remix在线编辑器,输入网址:https://remix.ethereum.org/
一、新定义一个合约Array,定义一个二维数组fenshu,uint[2][3] 中的3代表数组中共有三个元素,2代表每个元素中有两个值。具体场景设计:共有A\B\C三个人,两个值分别代表英语成绩和编程成绩,比如第一个元素[60,70]表示,A的英语成绩是60分,编程成绩为70.

pragma solidity^0.5.0;
contract Array{
    uint[2][3] public fenshu =[[60,70],[70,75],[80,85]];
}

二、获取二维数组的长度(获取元素个数),可以利用length方法,如图:
1处点击编译,2处点击运行,3处点击部署合约,4处点击调用 getLength1函数,5处返回长度3

pragma solidity^0.5.0;
contract Array{
    uint[2][3] public fenshu =[[60,70],[70,75],[80,85]];
    function getLength1()public returns(uint){
        return fenshu.length;
    }
}

三、获取二维数组特定元素的值长度(特定元素中值的个数),还是可以利用length方法,此处我们使用获取第一个元素fenshu[0].length的方法(因为是定长二维数组,所以可以使用fenshu[0]或者fenshu[1]),可以在合约中加入以下方法,合约部署,调用 getLength2函数后,返回数值2,即第一个元素中包含60和70两个值。

 function getLength2()public  returns(uint){
        return fenshu[0].length;
    }

四、如果我们想获取数组中所有元素的值的和,比如6个成绩加总,可以采取for循环遍历整个二维数据,具体代码如下。定义add方法,使用i来获取数据的长度,j来获取每个元素中值的个数,通过不断的遍历累加,算得sum为440.

function add()public returns(uint){
       uint sum=0;
       for(uint i=0;i<fenshu.length;i++){
           for (uint j=0;j<fenshu[0].length;j++){
               sum+=fenshu[i][j];
           }
       }
       return sum;
   }

五、获取数据中的某个元素,具体代码如下,次数定义 getNum()函数,通过返回 fenshu[0][1]来获取二维数组中的元素,0代表第一个元素,1代表第二个值,调用函数后返回数值70.

 function getNum()public returns(uint){
       return fenshu[0][1];
   }
发布了5 篇原创文章 · 获赞 2 · 访问量 2482

猜你喜欢

转载自blog.csdn.net/qinmiaofu/article/details/103871470