厦门企业网站开发,信息技术九年级上册网站咋做,网站建设大作业选题,wordpress 显示微信二维码Solidity极简入门: 2. 值类型 博主简介#xff1a;不写代码没饭吃#xff0c;一名全栈领域的创作者#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页#xff0c;探索全栈开发…Solidity极简入门: 2. 值类型 博主简介不写代码没饭吃一名全栈领域的创作者专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构分享一些项目实战经验以及前沿技术的见解。关注我们的主页探索全栈开发期待与您一起在移动开发的世界中不断进步和创造本文收录于 不写代码没饭吃 的学习汇报系列大家有兴趣的可以看一看。欢迎访问我们的微信公众号不写代码没饭吃获取更多精彩内容、实用技巧、行业资讯等。您关注的是我们前进的动力
Solidity中的变量类型 值类型(Value Type)包括布尔型整数型等等这类变量赋值时候直接传递数值。 引用类型(Reference Type)包括数组和结构体这类变量占空间大赋值时候直接传递地址类似指针。 映射类型(Mapping Type): Solidity中存储键值对的数据结构可以理解为哈希表
我们将仅介绍常用类型不常用的类型不会涉及本篇将介绍值类型。
值类型
1. 布尔型
布尔型是二值变量取值为 true 或 false。 // 布尔值bool public _bool true;布尔值的运算符包括
! 逻辑非 逻辑与“and”|| 逻辑或“or” 等于! 不等于 // 布尔运算bool public _bool1 !_bool; // 取非bool public _bool2 _bool _bool1; // 与bool public _bool3 _bool || _bool1; // 或bool public _bool4 _bool _bool1; // 相等bool public _bool5 _bool ! _bool1; // 不相等在上述代码中变量 _bool 的取值是 true_bool1 是 _bool 的非为 false_bool _bool1 为 false_bool || _bool1 为 true_bool _bool1 为 false_bool ! _bool1 为 true。
值得注意的是 和 || 运算符遵循短路规则这意味着假如存在 f(x) || g(y) 的表达式如果 f(x) 是 trueg(y) 不会被计算即使它和 f(x) 的结果是相反的。
2. 整型
整型是 Solidity 中的整数最常用的包括 // 整型int public _int -1; // 整数包括负数uint public _uint 1; // 正整数uint256 public _number 20220330; // 256位正整数常用的整型运算符包括
比较运算符返回布尔值 ! 算数运算符 - * / %取余**幂 // 整数运算uint256 public _number1 _number 1; // -*/uint256 public _number2 2**2; // 指数uint256 public _number3 7 % 2; // 取余数bool public _numberbool _number2 _number3; // 比大小大家可以运行一下代码看看这 4 个变量分别是多少。
3. 地址类型
地址类型(address)有两类
普通地址address: 存储一个 20 字节的值以太坊地址的大小。payable address: 比普通地址多了 transfer 和 send 两个成员方法用于接收转账。
我们会在之后的章节更加详细地介绍 payable address。 // 地址address public _address 0x7A58c0Be72BE218B41C608b7Fe7C5bB630736C71;address payable public _address1 payable(_address); // payable address可以转账、查余额// 地址类型的成员uint256 public balance _address1.balance; // balance of address4. 定长字节数组
字节数组分为定长和不定长两种
定长字节数组: 属于值类型数组长度在声明之后不能改变。根据字节数组的长度分为 bytes1, bytes8, bytes32 等类型。定长字节数组最多存储 32 bytes 数据即bytes32。不定长字节数组: 属于引用类型之后的章节介绍数组长度在声明之后可以改变包括 bytes 等。 // 固定长度的字节数组bytes32 public _byte32 MiniSolidity; bytes1 public _byte _byte32[0]; 在上述代码中MiniSolidity 变量以字节的方式存储进变量 _byte32。如果把它转换成 16 进制就是0x4d696e69536f6c69646974790000000000000000000000000000000000000000
_byte 变量的值为 _byte32 的第一个字节即 0x4d。
5. 枚举 enum
枚举enum是 Solidity 中用户定义的数据类型。它主要用于为 uint 分配名称使程序易于阅读和维护。它与 C 语言 中的 enum 类似使用名称来代替从 0 开始的 uint // 用enum将uint 0 1 2表示为Buy, Hold, Sellenum ActionSet { Buy, Hold, Sell }// 创建enum变量 actionActionSet action ActionSet.Buy;枚举可以显式地和 uint 相互转换并会检查转换的正整数是否在枚举的长度内否则会报错 // enum可以和uint显式的转换function enumToUint() external view returns(uint){return uint(action);}enum 是一个比较冷门的变量几乎没什么人用。
在 Remix 上运行
部署合约后可以查看每个类型的变量的数值 enum 和 uint 转换的示例 总结
在这一讲我们介绍了 Solidity 中值类型包括布尔型、整型、地址、定长字节数组和枚举。在后续章节我们将继续介绍 Solidity 的其他变量类型包括引用类型和映射类型。 如果这份博客对大家有帮助希望各位给作者一个免费的点赞作为鼓励并评论收藏一下⭐谢谢大家 制作不易如果大家有什么疑问或给作者的意见欢迎评论区留言。