Cover photo

变量初始值

变量初始值

在solidity中,声明但没赋值的变量都有它的初始值或默认值。

值类型初始值

  • booleanfalse

  • string""

  • int0

  • uint0

  • enum枚举中的第一个元素

  • address0x0000000000000000000000000000000000000000 (或address(0))

  • function

    • internal: 空白函数

    • external: 空白函数

可以使用public变量的getter函数验证上面的初始值是否正确:

    bool public _bool;   //false
    string public _string; //""
    int public _int; //0
    uint public _uint; //0
    address public _address; //0x0000000000000000000000000000000000000000

    enum ActionSet {Buy,Hold,Sell}
    ActionSet public _enum;  //第一个元素0

    function fi() internal {}  //internal空白函数
    function fe() external {}  //external空白函数

引用类型初始值

  • 映射mapping:所有元素都为其默认值得mapping

  • 结构体struct:所有成员设为默认值的结构体

  • 数组array

    • 动态数组:[]

    • 静态数组(定长):所有成员设为其默认值的静态数组

可以使用public变量的getter函数验证上面的初始值是否正确:

    uint[8] public _staticArray; //所有成员设为默认值的静态数组[0,0,0,0,0,0,0,0]
    uint[] public _dyanmicArray; //`[]`
    mapping(uint => address) public _mapping; //所有元素都为其默认值的mapping

    //所有成员设为其默认值的结构体0,0
    struct Stuent {
        uint256 id;
        uint256 score;
    }

    Stuent public student;

delete操作符

delete a会让变量a的值变为初始值。

    //delete操作符
    bool public _bool2 = true;
    function d() external {
        delete _bool2; // delete 会让_bool2变为默认值,false
    }