合约的值类型

  • 基本数据类型:整数、枚举、布尔(类似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读取长度

猜你喜欢

转载自blog.csdn.net/qq_37117521/article/details/139100812