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.rhkb.cn/news/306675.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小样本计数网络FamNet(Learning To Count Everything)

小样本计数网络FamNet(Learning To Count Everything) 大多数计数方法都仅仅针对一类特定的物体,如人群计数、汽车计数、动物计数等。一些方法可以进行多类物体的计数,但是training set中的类别和test set中的类别必须是相同的。 为了增加计数方法的可拓…

揭秘大前端开发方向的新机遇!

众所周知,华为开发者大会2023,宣布不再兼容安卓,同时宣布了“鸿飞计划”,欲与iOS、安卓在市场三分天下,这对中国国产操作系统而言,具有划时代的意义。 鸿蒙应用开发的兴起&发展 鸿蒙操作系统是华为自…

如何开辟动态二维数组(C语言)

1. 开辟动态二维数组 C语言标准库中并没有可以直接开辟动态二维数组的函数,但我们可以通过动态一维数组来模拟动态二维数组。 二维数组其实可以看作是一个存着"DataType []"类型数据的一维数组,也就是存放着一维数组地址的一维数组。 所以&…

阿里云4核16G服务器可以用来做什么?

阿里云4核16G服务器可以用来做什么?可用来搭建游戏服务器,阿里云4核16G服务器10M带宽30元1个月、90元3个月,优惠活动 aliyunfuwuqi.com/go/youhui 阿里云4核16G服务器可以用来做什么?除了搭建游戏服务器,还可以用来哪…

python小游戏

这些游戏你玩过几个&#xff1f; 1.贪吃蛇2.吃豆人3.加农炮4.四子棋5. Fly Bird<font color #f3704ab>6.记忆&#xff1a;数字对拼图游戏&#xff08;欢迎挑战&#xff01;用时&#xff1a;2min&#xff09;7.乒乓球8.上课划水必备-井字游戏&#xff08;我敢说100%的人都…

springCloud项目打包 ,maven package或install打包报错

解决思路一&#xff1a; <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.7.RELEASE</version></plugin><plugin>&…

智能合约:未来数字经济的基石

智能合约是一种自动执行交易的计算机协议&#xff0c;它以代码形式规定了交易双方的权利和义务&#xff0c;具有高度的可靠性和安全性。随着数字经济的发展&#xff0c;智能合约的重要性日益凸显&#xff0c;将成为未来数字经济的基石。 首先&#xff0c;智能合约在金融领域的应…

雨云:不只是一阵清风,更是一场暴雨的力量

引言 在网络时代&#xff0c;服务器是任何在线业务的核心。无论你是运营一家小型博客还是承载着数百万用户的大型电商平台&#xff0c;都需要一个稳定、高效的服务器来支持你的业务。然而&#xff0c;在众多服务器提供商中&#xff0c;有一家备受推崇&#xff0c;那就是雨云。 …

AI算力报告:算力大时代,AI算力产业链全景梳理

今天分享的是AI算力专题系列深度研究报告&#xff1a;《算力大时代&#xff0c;AI算力产业链全景梳理》。 &#xff08;报告出品方&#xff1a;中信建投证券&#xff09; 报告共计&#xff1a;98页 核心观点 生成式 AI取得突破&#xff0c;我们对生成式 A 带来的算力需求做…

计算机网络—HTTPS协议详解:工作原理、安全性及应用实践

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;ヒューマノイド—ずっと真夜中でいいのに。 1:03━━━━━━️&#x1f49f;──────── 5:06 &#x1f504; ◀️ ⏸…

Linux上下载部署zentao v15.5及具体的使用

1.先查询一下Linux的操作系统的位数&#xff0c;确保下载的文件位数与os的一致 [rootlocalhost xiaoming]# uname -m x86_64 [rootlocalhost xiaoming]# getconf LONG_BIT 64 2.下载zentao的Linux压缩包 wget https://www.zentao.net/dl/zentao/15.5/ZenTaoPMS.15.5.zbox…

【QT教程】QT6 Web性能优化

QT6 Web性能优化 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免费…

MySQL选择普通索引还是唯一索引(2/16)

普通索引和唯一索引 基本概述 MySQL中可以创建普通索引与唯一索引&#xff0c;这两种索引的区别是&#xff1a; 普通索引&#xff08;Non-Unique Index&#xff09;&#xff0c;也称为非唯一索引&#xff0c;它允许索引中的条目具有重复的键值。普通索引的主要目的是加快查询…

【MATLAB源码-第44期】基于matlab的2*2MIMO-LDPC系统的误码率仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 2x2 MIMO&#xff08;多输入多输出&#xff09;和LDPC&#xff08;低密度奇偶校验码&#xff09;编码是在通信系统中常用的技术&#xff0c;它们通常用于提高无线通信系统的性能和可靠性。 1. 2x2 MIMO&#xff1a; 2x2 MIM…

宁波宠物展|2024中国(宁波)国际宠物用品博览会

中国(宁波)国际宠物用品博览会 地点&#xff1a;宁波国际会展中心 时间&#xff1a;2024年11月14-16日 主办单位:凤麟展览(宁波)有限公司 协办单位:浙江省宠物产业协会 宁波市跨境电子商务协会 宁波欧德国际商务咨询服务有限公司 宁波扬扬会议展览有限公司 20000方展览…

[RK3399 Linux] 使用ubuntu 20.04.5制作rootfs

一、ubuntu base ubuntu base是用于为特定需求创建自定义映像的最小rootfs,是ubuntu可以运行的最小环境。 1.1 下载源码 下载ubuntu-base的方式有很多,可以从官方的地址:ttp://cdimage.ubuntu.com/ubuntu-base/releases。 也可以其它镜像地址下载,如清华源:https://mi…

动态规划|70.爬楼梯

力扣题目链接 class Solution { public:int climbStairs(int n) {if (n < 1) return n; // 因为下面直接对dp[2]操作了&#xff0c;防止空指针vector<int> dp(n 1);dp[1] 1;dp[2] 2;for (int i 3; i < n; i) { // 注意i是从3开始的dp[i] dp[i - 1] dp[i - 2…

emmet语法--快速生成html标签

emmet语法介绍 可以直接把它理解为快捷键。 通过一定简略的缩写配合快捷键&#xff0c;直接生成我们想要的html代码。 vscode中已经内置了emmet语法&#xff0c;可以直接使用。 emmet的核心就是tab键&#xff0c;我们输入关键词然后按下tap就可以直接生成我们要的代码。 标…

Linux的学习之路:8、Linux调试器-gdb使用

摘要 本章主要是说一下gdb的使用&#xff0c;以及把使用指令放入放个指令手册。 目录 摘要 一、背景 二、使用 1、产生debug文件 2、进入gdb 3、使用指令 三、思维导图 一、背景 Linux调试器gdb的背景主要涉及到Linux程序发布方式和调试需求。 在Linux中&#xff0c…

手把手教你创建新的OpenHarmony 三方库

创建新的三方库 创建 OpenHarmony 三方库&#xff0c;建议使用 Deveco Studio&#xff0c;并添加 ohpm 工具的环境变量到 PATH 环境变量。 创建方法 1&#xff1a;IDE 界面创建 在现有应用工程中&#xff0c;新创建 Module&#xff0c;选择"Static Library"模板&a…