034.Solidity入门——21不可变量

Solidity中的不可变量是编译时确定的常量,不能在合约中修改。它们用于存储不变数据,如合约地址,有助于减少gas费用。示例代码展示了一个不可变地址和数值变量的用法,以及尝试更新不可变变量将导致编译错误。
摘要由CSDN通过智能技术生成

Solidity 中的不可变量是在编译时就被确定的常量,也称为常量变量(constant variable)只读变量(read-only variable)这些变量在定义时必须立即初始化,并且在整个合约中都无法被修改,可以在函数内部使用,但是无法更改它们的值。

不可变量通常用于存储不需要更改的数据,例如合约地址或具有公认不变性的数值。由于这些变量在编译时就已经被确定了值,因此它们不需要在运行时被计算,从而可以帮助减少合约的 gas 费用

示例代码:

pragma solidity ^0.8.0;

contract ImmutableExample {
    // 定义一个不可变地址变量
    address public immutable myAddress;
    // 定义一个不可变数值变量
    uint256 public immutable myNumber;

    constructor(address _addr, uint256 _number) {
        // 初始化不可变变量
        myAddress = _addr;
        myNumber = _number;
    }

    // 函数使用不可变变量
    function getAddress() public view returns (address) {
        return myAddress;
    }

    // 函数使用不可变变量,并且更新状态变量
    function updateNumber(uint256 _newNumber) public {
        // 下面的代码会导致编译错误,因为 myNumber 是不可变变量,无法被更改
        // myNumber = _newNumber;
    }
}

注:两个不可变变量 myAddressmyNumber在合约部署时被初始化,并且在整个合约生命周期内都无法被更改。

不可变变量在编译时就已经确定了值,因此访问它们的时候不需要消耗 gas,而更新不可变变量会导致编译错误。因此,使用不可变变量可以帮助减少合约的 gas 费用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值