Solidity 03

51 阅读2分钟

类型

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。