Immutable(不可变)变量类似于常量。不可变变量的值可以在构造函数中设置,但之后不能修改。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
contract Immutable {
// 编码惯例,将常量变量大写
address public immutable MY_ADDRESS;
uint public immutable MY_UINT;
constructor(uint _myUint) {
MY_ADDRESS = msg.sender;
MY_UINT = _myUint;
}
}
- Immutable(不可变)变量是类似于常量的变量。\
- 不可变变量的值可以在构造函数中设置,但之后不能修改。\
- 编码惯例是将常量变量大写。
修饰状态变量时:在构造时允许有一个确切的赋值,之后是恒定的。被存储在代码中。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
contract Immutable {
// coding convention to uppercase constant variables
//变量前加了immutable修饰符说明他只能被constructor这个初始化函数修改,然后就不能修改了
//immutable只能在 constructor里被赋值
address public immutable MY_ADDRESS;
uint public immutable MY_UINT;
constructor(uint _myUint) {
MY_ADDRESS = msg.sender;
MY_UINT = _myUint; //当然也可以单独赋值 如MY_UINT=122333;
}
}
当一个合约被创建时,它的 构造函数(constructor) (一个用 constructor
关键字声明的函数)被执行一次。