当前位置: 首页 > news >正文

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

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 费用。

http://www.lryc.cn/news/9923.html

相关文章:

  • Vulnhub 渗透练习(四)—— Acid
  • C++ 在线工具
  • 使用MMDetection进行目标检测、实例和全景分割
  • 使用ThreadLocal实现当前登录信息的存取
  • 高通平台开发系列讲解(Android篇)AudioTrack音频流数据传输
  • BUUCTF-firmware1
  • 【C++之容器篇】二叉搜索树的理论与使用
  • 爬虫神级解析工具之XPath:用法详解及实战
  • Markdown编辑器
  • 数据结构<堆>
  • Linux下Socket编程利用多进程实现一台服务器与多台客户端并发通信
  • 【MySQL】数据库基础
  • Microsoft Office 2021 / 2019 Direct Download Links
  • XX 系统oracle RAC+ADG 数据库高可用容灾演练记录
  • JSP与Servlet
  • C++之迭代器
  • 2023-02-16:干活小计
  • Linux上安装LaTeX
  • webpack -- 无法将“webpack”项识别为 cmdlet
  • 对齐与非对齐访问
  • 基于感知动作循环的层次推理用于视觉问答
  • python中的.nc文件处理 | 05 NetCDF数据的进一步分析
  • GGX发布全新路线图,揭示具备 Layer0 特性且可编程的跨链基建生态
  • taro+vue3 搭建一套框架,适用于微信小程序和H5
  • C++:模板初阶(泛型编程、函数模板、类模板)
  • 把数组排成最小的数 AcWing(JAVA)
  • 4.3 PBR
  • hmac — 加密消息签名和验证
  • AWS攻略——使用ACL限制访问
  • 【已解决】关于 luckysheet 设置纯文本,解决日期格式回显错误的办法