《Solidity笔记》常量

192 阅读1分钟

在 Solidity 中,常量(constant)和不变量(immutable)是两个关键字,用于声明状态变量。声明为常量或不变量的变量在合约创建后不能再被更改,同时可以节省 gas 费用。本文将介绍 constant 和 immutable 关键字的用法以及它们的区别。

1. constant 关键字

constant 变量必须在声明时初始化,并且在之后不能更改。尝试更改 constant 变量的值将导致编译错误。

示例:


uint256 constant CONSTANT_NUM = 10;
string constant CONSTANT_STRING = "0xAA";
bytes constant CONSTANT_BYTES = "WTF";
address constant CONSTANT_ADDRESS = address(0);

2. immutable 关键字

immutable 变量可以在声明时或构造函数中初始化,并且之后不能更改,因此更加灵活。

示例:

uint256 public immutable IMMUTABLE_NUM = 9999999999;
address public immutable IMMUTABLE_ADDRESS;
uint256 public immutable IMMUTABLE_BLOCK;
uint256 public immutable IMMUTABLE_TEST;

constructor() {
    IMMUTABLE_ADDRESS = address(this);
    IMMUTABLE_BLOCK = block.number;
    IMMUTABLE_TEST = test();
}

function test() public pure returns(uint256) {
    uint256 what = 9;
    return what;
}

常量和不变量的使用可以提高合约的安全性和可读性,并且节省 gas 费用。