💠 在 Solidity 中,为了定义不可更改的数值或地址,我们常常需要使用两个特别的关键字:constant 和 immutable。
🔒 constant
constant 变量在声明的同时必须初始化。初始化后,这些变量的值就不能更改了。如果你尝试更改 constant 变量的值,编译器将不会通过。
💡 Copy code
uint256 constant CONSTANT_NUM = 10; // 🚫 无法更改
string constant CONSTANT_STRING = "0xAA"; // 🚫 无法更改
bytes constant CONSTANT_BYTES = "WTF"; // 🚫 无法更改
address constant CONSTANT_ADDRESS = 0x0000000000000000000000000000000000000000; // 🚫 无法更改
🔓 immutable
与 constant 相比,immutable 变量提供了更多的灵活性。它们可以在声明时或在构造函数中初始化。一旦设定值,immutable 变量也是不可更改的。
💡 Copy code
uint256 public immutable IMMUTABLE_NUM = 9999999999; // ✅ 可在声明时赋值
address public immutable IMMUTABLE_ADDRESS; // ✨ 暂未赋值
uint256 public immutable IMMUTABLE_BLOCK; // ✨ 暂未赋值
uint256 public immutable IM