Solidity极简入门 | 第二讲:数值类型

22-05-24 22:00
阅读本文需 8 分钟
总结 AI 总结
看总结 收起
原文标题:《 Solidity 极简入门:2. 数值类型 》

原文来源:0xAA  


我最近在重新学 solidity,巩固一下细节,也写一个「Solidity 极简入门」,供小白们使用(编程大佬可以另找教程),每周更新 1-3 讲。


所有代码开源在 github:github.com/AmazingAng/WTFSolidity


Solidity 中的变量类型数值类型 (Value Type):包括布尔型,整数型等等,这类变量赋值时候直接传递数值。引用类型 (Reference Type):包括数组和结构体,这类变量占空间大,赋值时候直接传递地址(类似指针)。映射类型 (Mapping Type): Solidity 里的哈希表。函数类型 (Function Type):Solidity 文档里把函数归到数值类型,但我觉得他跟其他类型差别很大,所以单独分一类。


我们只介绍一些常用的类型,不常用的不讲。这篇介绍数值类型,第 3 讲介绍函数类型,第 4 讲介绍引用和映射。


数值类型 1. 布尔型


布尔型是二值变量,取值为 true 或 false。



布尔值的运算符,包括:


!(逻辑非)

&&(逻辑与,"and")

||(逻辑或,"or")

==(等于)

!=(不等于)


代码:



上面的代码中:变量_bool 的取值是 true;_bool1 是_bool 的非,为 false;_bool && _bool1 为 false;_bool || _bool1 为 true;_bool == _bool1 为 false;_bool != _bool1 为 true。


2. 整型


整型是 solidity 中的整数,最常用的包括



常用的整型运算符包括:


比较运算符(返回布尔值): <=, <, ==, !=, >=, >

算数运算符: +, -,一元运算 -, +, *, /, %(取余),**(幂)


代码:



大家可以跑一下代码,看看这 4 个变量分别是多少。答对奖励个 POAP?


3. 地址类型


地址类型 (address) 存储一个 20 字节的值(以太坊地址的大小)。地址类型也有成员变量,并作为所有合约的基础。有普通的地址和可以转账 ETH 的地址(payable)。payable 的地址拥有 balance 和 tranfer() 两个成员,方便查询 ETH 余额以及转账。


代码



下一讲介绍函数的时候,会介绍如何使用地址类型。


4. 定长字节数组


字节数组 bytes 分两种,一种定长(byte, bytes8, bytes32),另一种不定长。定长的属于数值类型,不定长的是引用类型(之后讲)。

定长 bytes 可以存一些数据,消耗 gas 比较少。


代码:



MiniSolidity 变量以字节的方式存储进变量_byte32,转换成 16 进制为:0x4d696e69536f6c69646974790000000000000000000000000000000000000000


_byte 变量存储_byte32 的第一个字节,为 0x4d。


5. 枚举 enum


枚举(enum)是 solidity 中用户定义的数据类型。它主要用于为 uint 分配名称,是程序易于阅读和维护。它与 C 语言中的 enum 类似,把名称从 0 开始 uint 表示:



  它可以显式的和 uint 相互转换,并会检查转换的正整数是否在枚举的长度内,不然会报错:



enum 的一个比较冷门的变量,几乎没什么人用。


总结


在第二讲,我们介绍了 solidity 中 4 种变量类型,并详细介绍了数值变量(value type) 中的布尔型,整型,地址,定长字节数组和枚举。之后我们会介绍其他几种类型。


原文链接


欢迎加入律动 BlockBeats 官方社群:

Telegram 订阅群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方账号:https://twitter.com/BlockBeatsAsia

举报 纠错/举报
选择文库
新增文库
取消
完成
新增文库
仅自己可见
公开
保存
纠错/举报
提交