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

solidity(3)

地址类型

pragma solidity ^0.8.0;contract AddressExample {// 地址address public _address = 0x7A58c0Be72BE218B41C608b7Fe7C5bB630736C71;address payable public _address1 = payable(_address); // payable address,可以转账、查余额// 地址类型的成员uint256 public balance = _address1.balance; // balance of address
}

上面的代码展示了 Solidity 中地址类型的基本用法。地址类型存储一个 20 字节的值,即以太坊地址的大小。地址类型有两种:普通地址和可以转账 ETH 的地址(payable)。payable 修饰的地址可以执行转账操作,并具有两个额外的成员函数:`transfer` 和 `send`。在 payable 修饰的地址中,`send` 执行失败不会影响当前合约的执行,但会返回 false 值,需要开发人员检查返回值。除此之外,payable 地址还提供了 `balance` 和 `transfer()` 成员函数,用于查询 ETH 余额和执行安全转账操作。

定长字节数组

pragma solidity ^0.8.0;contract ByteArrayExample {// 固定长度的字节数组bytes32 public _byte32 = "MiniSolidity"; bytes1 public _byte = _byte32[0]; // MiniSolidity变量以字节的方式存储进变量_byte32,转换成16进制为:0x4d696e69536f6c69646974790000000000000000000000000000000000000000// _byte变量存储_byte32的第一个字节,为0x4d。
}

上面的代码演示了 Solidity 中固定长度的字节数组的基本用法。字节数组有两种:定长和不定长。定长的字节数组(如 bytebytes8bytes32)属于数值类型,而不定长的字节数组是引用类型(稍后讲述)。

在示例中,_byte32 是一个固定长度的字节数组,存储了字符串 "MiniSolidity"。变量 _byte 存储了 _byte32 的第一个字节,即字符串 "M" 的 ASCII 码(十六进制为 0x4d)。

枚举

pragma solidity ^0.8.0;contract EnumExample {// 用 enum 将 uint 0,1,2 表示为 Buy, Hold, Sellenum ActionSet { Buy, Hold, Sell }// 创建 enum 变量 actionActionSet public action = ActionSet.Buy;// enum 可以和 uint 显式的转换function enumToUint() external view returns (uint) {return uint(action);}
}

上面的代码演示了 Solidity 中枚举(enum)的基本用法。枚举是 Solidity 中的用户定义数据类型,主要用于为 uint 分配名称,使程序易于阅读和维护。与 C 语言中的 enum 类似,Solidity 的枚举使用名称来代替从 0 开始的 uint。

在示例中,ActionSet 枚举类型定义了三个可能的取值:BuyHoldSell。通过创建 action 变量,并将其初始化为 ActionSet.Buy,我们可以将枚举值用于实际编程中。

此外,示例中的 enumToUint 函数演示了如何将枚举值显式转换为 uint 类型。这种转换可以方便地将枚举值用于计算或存储。

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

相关文章:

  • 笔记 | 编译原理L1
  • k8s存储卷 PV与PVC 理论学习
  • 【WPF应用32】WPF中的DataGrid控件详解与示例
  • numpy,matplotilib学习(菜鸟教程)
  • Web API(四)之日期对象节点操作js插件重绘和回流
  • 27.WEB渗透测试-数据传输与加解密(1)
  • 山寨windows
  • unity工程输出的log在哪里?
  • 【力扣】7. 整数反转
  • Android Apk签名算法使用SHA256
  • 2024.3.13力扣每日一题——最大二进制奇数
  • 2024.4.1力扣每日一题——故障键盘
  • 第十四届蓝桥杯C/C++大学B组题解(一)
  • 4.网络编程-websocket(golang)
  • docker安装部署mysql后忘记root密码
  • c++的学习之路:14、list(1)
  • huawei 华为交换机 配置 VLAN 聚合示例
  • 【QT+QGIS跨平台编译】056:【pdal-dimbuilder+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 【Python】探索Python中的aiohttp:构建高效并发爬虫
  • 创建真实项目vue2项目
  • 【大数据】安装hive-3.1.2
  • STM32工程 如何设置堆栈大小(Heap和Stack)
  • 光纤资源运维管理升级方案,让您的网络资产价值倍增!
  • 【深度学习】最强算法之:深度Q网络(DQN)
  • 微软文本转语音和语音转文本功能更新,效果显著!
  • 充场拉新工作室保证金靠谱吗?找一手渠道是否免费?
  • 揭秘淘宝商品详情数据接口(Taobao.item_get)
  • Linux从入门到精通 --- 4(上).快捷键、软件安装、systemctl、软链接、日期和时区、IP地址
  • ESP32调试笔记
  • python -- NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+