Skip to content

Latest commit

 

History

History
53 lines (39 loc) · 1.67 KB

06 不可变.md

File metadata and controls

53 lines (39 loc) · 1.67 KB

不可变

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 关键字声明的函数)被执行一次。

还有其他可以参考:速查表 — Solidity 0.8.17 文档 (soliditylang.org)