Skip to content

Latest commit

 

History

History
59 lines (47 loc) · 2.37 KB

05 常量.md

File metadata and controls

59 lines (47 loc) · 2.37 KB

常量

常量是无法修改的变量。
它们的值是硬编码的,并且使用常量可以节省燃气费用。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract Constants {
// 编码惯例将常量变量大写
address public constant MY_ADDRESS = 0x777788889999AaAAbBbbCcccddDdeeeEfFFfCcCc;
uint public constant MY_UINT = 123;
}

术语解释:

Constants: 常量,是指值无法修改的变量。
Gas cost: 燃气费用,是 Solidity 中衡量交易执行成本的单位。在以太坊网络中,每个操作都需要消耗一定量的燃气,每个燃气单元都需要支付一定的费用。
SPDX-License-Identifier: MIT: SPDX-License-Identifier 是一个 SPDX 标识符,用于声明 Solidity 源代码的许可证。MIT 是一个广泛使用的开源许可证。
pragma solidity ^0.8.17: pragma 是一个 Solidity 关键字,用于指定 Solidity 版本。^0.8.17 表示 Solidity 版本号为 0.8.17 或更高版本,但不包括 0.9.0 及以上版本。
address: 地址类型,表示以太坊网络中的账户地址。
uint: 无符号整数类型,可以存储 0 到 2^256-1 之间的整数。

扩充

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract Constants {
    // constant修饰符代表这个变量是不可被修改的
    address public constant MY_ADDRESS = 0x777788889999AaAAbBbbCcccddDdeeeEfFFfCcCc;  //MY_ADDRESS无法被改变
    uint public constant MY_UINT = 123;

    function mod() public {
        MY_ADDRESS = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;            //如果被改变就会报错
    }
}

同理如果是其他的效果,可以在编辑器里面试一下

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract Constants {
    // constant修饰符代表这个变量是不可被修改的
    address public constant MY_ADDRESS = 0x777788889999AaAAbBbbCcccddDdeeeEfFFfCcCc;  //MY_ADDRESS无法被改变
    uint public constant MY_UINT = 123;
    address public TestAddress;

    function mod() public {
        TestAddress = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;//注意先调用外部address,地址为0x00000... 如果调用mod()函数 则调用 需要消耗GAS            
    }
}

constant 作为常量必须在声明时赋值,否则compile 不通过,immutable 同理,不一定非要constructor。(immutable 在constructor 里面赋值也可以)