类型
Solidity中不存在“未定义”或“空”值的概念, 但新声明的变量总是有一个取决于其类型的 默认值。 为了处理任何意外的值,您应该使用 revert 函数 来恢复整个事务, 或者返回一个带有第二个 bool 值的元组来表示成功。
值类型
bool
int / uint: 分别表示有符号和无符号的不同位数的整型变量。 关键字 uint8 到 uint256 (无符号整型,从 8 位到 256 位)以及 int8 到 int256, 以 8 位为步长递增。 uint 和 int 分别是 uint256 和 int256 的别名。
定长浮点型
Solidity 还没有完全支持定长浮点型。可以声明定长浮点型的变量, 但不能给它们赋值或把它们赋值给其他变量。
fixed / ufixed:表示各种大小的有符号和无符号的定长浮点型。 在关键字 ufixedMxN 和 fixedMxN 中, M 表示该类型占用的位数, N 表示可用的小数位数。 M 必须能整除 8,即 8 到 256 位。 N 则可以是从 0 到 80 之间的任意数。 ufixed 和 fixed 分别是 ufixed128x18 和 fixed128x18 的别名。
地址类型
地址类型有两种大致相同的类型:
address: 保存一个20字节的值(一个以太坊地址的大小)。address payable: 与address类型相同,但有额外的方法transfer和send。
地址类型的成员变量
balance 和 transfer
send, send是transfer的低级对应部分,执行失败不会停止
call, delegatecall, staticcall
code, codehash
合约类型
每个合约都定义的自己的类型,可以隐式将一个合约转换为它们所继承的另外一个合约,合约可以显式转换为address类型,也可以从address类型中转换。
定长字节数组
bytes1,...,bytes32
变长字节数组
bytes:
string:
地址字面量
十六进制字面量
以关键字hex打头
函数类型
内部函数和外部函数
function (<parameter types>) {internal|external} [pure|view|payable] [returns (<return types>)]
引用类型
memory
storage
callback
数据位置
删除
delete a 为该类型分配初始值 a。