- 基本数据类型:整数、枚举、布尔(类似java的数据类型)
- Address、Contract(这两种是solidity特有的数据类型)
- Fixed byte array(定长字节数组)
Integer(int/uint)
int/uint 以8位字节递增,uint是uint256的alias(别名)
对于整形数类型x,可以用type(x).min()和type(x).max()取这个类型的最大值或最小值
以太坊虚拟机是256位的机器
溢出处理:版本取模,开发者用SafeMath处理抛出异常,高版本会异常;
Enum type
枚举是用户创建自定义类型的一种方法(contract、struct、enum)
可以与整形数显式转换(隐式不行)
整形到枚举的转化会检查是否越界
枚举最少一个成员,最多256成员(uint8),默认值第一个成员
从0开始的无符号整型数(与C相同)
Address初步
address:20字节长度
关于可支付:
- address payable:可支付,有成员函数transfer和send
- address payable可转换addres,反之需要显式转换
address可转换为uint160和bytes20
合约账号地址与外部账号地址EOA(External Owned Account)
call、balance等,很大程度上address并不只是一个数据类型了
Contract类型
合约可以隐式转换为它的父合约(多态)
合约可以显式转换为地址类型address
合约不支持任何运算符
从合约变量(实例)调用合约函数
合约可用new操作符部署另一个合约
- 获取外部账号地址
- 获取当前被调用合约地址
Fixed-size byte array
从bytes1到bytes32
通过下标访问元素
通过length读取长度