当前位置: 首页 > 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 类型。这种转换可以方便地将枚举值用于计算或存储。

相关文章:

  • SCP 从Linux快速下载文件到Windows本地
  • 移动机器人运动规划 | 基于图搜索的Dijkstra 和 A*算法详解
  • 【软考高项】第二章 信息技术发展
  • WebSocket 对于手游的意义
  • CMake学习笔记(三)区分macro与function
  • 钉钉自建应用-下载excel(h5)
  • 插值表达式
  • 【御控物联】JavaScript JSON结构转换(16):对象To数组——综合应用
  • 文件操作详解
  • 蓝桥杯刷题-14-更小的数-区间DP⭐
  • windows or ubuntu mount 文件
  • 初学python记录:力扣1600. 王位继承顺序
  • 【微服务】面试题(一)
  • 鸿蒙原生应用已超4000个!
  • 【三十七】【算法分析与设计】STL 练习,凌波微步,栈和排序,吐泡泡,[HNOI2003]操作系统,优先队列自定义类型
  • (三)从jvm层面了解线程的启动和停止
  • 【Linux系统编程】快速查找errno错误码信息
  • git 常用命令
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • PHP的Ev教程三(Periodic watcher)
  • Rancher-k8s加速安装文档
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Web Storage相关
  • 闭包--闭包作用之保存(一)
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 码农张的Bug人生 - 见面之礼
  • 前端知识点整理(待续)
  • 让你的分享飞起来——极光推出社会化分享组件
  • 网页视频流m3u8/ts视频下载
  • 学习笔记:对象,原型和继承(1)
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 在Unity中实现一个简单的消息管理器
  • 栈实现走出迷宫(C++)
  • Java性能优化之JVM GC(垃圾回收机制)
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (学习日记)2024.01.19
  • (一) storm的集群安装与配置
  • (转)winform之ListView
  • .bat文件调用java类的main方法
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net mvc部分视图
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET命令行(CLI)常用命令
  • .Net转前端开发-启航篇,如何定制博客园主题
  • 。Net下Windows服务程序开发疑惑
  • /bin/bash^M: bad interpreter: No such file or directory
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [C#]使用PaddleInference图片旋转四种角度检测
  • [dfs搜索寻找矩阵中最长递减序列]魔法森林的秘密路径
  • [Fri 26 Jun 2015 ~ Thu 2 Jul 2015] Deep Learning in arxiv