【转载】solidity智能合约[16]-固定长度数组


#1

数组

内存中的一片连续区域

定义

int[7] math;
bytes2[3] bytesTest;

赋值

uint[5] public  grade =[1,2,3,4,5];

修改内容

function init2() public {
   bytesTest[1] = 0x6a6f;
}

返回数组

function getArray2() public view returns(bytes2[3]){

return bytesTest;
}

获取数组长度

function getlength() public view returns(uint){
     return grade.length;

 }

数组遍历求和

function add() public view returns(uint){
    uint sum= 0 ;
    for(uint i = 0;i<5;i++){
        sum+=grade[i];
    }
    return sum;
}

错误代码

固定数组不能修改大小和内容

//   function getlength2() public{
//     grade.length  =90;

// }

// function pushelement() public {

//     grade.push(90);
// }

完整例子

pragma solidity ^0.4.23;

contract arrayTest{


    uint[5] public  grade =[1,2,3,4,5];

    int[7] math;
    bytes2[3] bytesTest;

     function init2() public {
        bytesTest[1] = 0x6a6f;
    }

        function getArray2() public view returns(bytes2[3]){

        return bytesTest;
    }
    function init() public {
        grade[0] = 100;
        grade[1] = 200;
    }

    function getArray() public view returns(uint[5]){

        return grade;
    }

    function add() public view returns(uint){
        uint sum= 0 ;
        for(uint i = 0;i<5;i++){
            sum+=grade[i];
        }
        return sum;
    }

    function getlength() public view returns(uint){
        return grade.length;

    }

    //   function getlength2() public{
    //     grade.length  =90;

    // }

    // function pushelement() public {

    //     grade.push(90);
    // }

}
  • 本文链接: <https ://dreamerjonson.com/2018/11/19/solidity-16-fixarray/>