Skip to content

Latest commit

 

History

History
24 lines (19 loc) · 1.06 KB

File metadata and controls

24 lines (19 loc) · 1.06 KB

101-09 常数 constant和immutable

constant(常量),immutable(不变量)状态变量声明这两个关键词之后,不能在初始化后更改数值.这样做的好处是提升合约安全性并节省gas

另外,只有数值变量可以声明constant和immutable;string和bytes可以声明为constant,但不能为immutable.

constant和immutable

  1. constant变量必须在声明时初始化,之后不能再改变,尝试改变则编译不通过
    uint256 constant CONSTANT_NUM = 10;
    string constant CONSTANT_STRING = "Craig";
    bytes constant CONSTANT_BYTES = "LX";
    address constant CONSTANT_ADDRESS = 0x0000000000000000000000000000000000000000;
  1. immutable变量可以在声明时或构造函数中初始化,因此更加灵活。
uint256 public immutable IMMUTABLE_NUM = 9999999999;
address public immutable IMMUTABLE_ADDRESS;
uint256 public immutable IMMUTABLE_BLOCK;
uint256 public immutable IMMUTABLE_TEST;

还可以使用全局变量例如address(this),block.number 或者自定义的函数给immutable变量初始化。