1.布尔型
bool public _bool = true;
bool public __bool = false;
2.整型
int public _int = -1; // 整数,包括负数
uint public _uint = 1; // 正整数
uint256 public _number = 20220330; // uint256 0-2**256-1
比较运算符(返回布尔值):<=
, <
, ==
, !=
, >=
, >
算数运算符: +
, -
,*
, /
, %
(取余),**
(指数)
3. 地址类型
地址类型(address)存储一个 20 字节的值(以太坊地址的大小)。
地址类型也有成员变量,并作为所有合约的基础。
有普通的地址和可以转账ETH
的地址(payable
)。payable
的地址拥有balance
和transfer()
两个成员,方便查询ETH
余额以及转账。
4. 定长字节数组
byte
是 bytes1
的别名。
可以将 byte[] 当作字节数组使用,但这种方式非常浪费存储空间,准确来说,是在传入调用时,每个元素会浪费 31 字节。 更好地做法是使用 bytes。
定长
bytes
可以存一些数据,消耗gas
比较少。
关键字有:bytes1
, bytes2
, bytes3
, …, bytes32
。
成员变量:
.length
表示这个字节数组的长度(只读).
// SPDX-License-Identifier: MIT
//声明solidity版本 这行代码意思是源文件将不允许小于 0.8.4 版本或大于等于 0.9.0 版本的编译器编译
pragma solidity ^0.8.4;
contract Web3{
//MiniSolidity变量以字节的方式存储进变量_byte32,转换成16进制为:0x4d696e69536f6c69646974790000000000000000000000000000000000000000
bytes32 public _byte32 = "XiniSolidityS";
//_byte变量存储_byte32的第一个字节,为0x4d。
bytes1 public _byte = _byte32[0];
//_byte32.length的长度
uint public number = _byte32.length;
}
5. 枚举 enum
枚举(enum
)是solidity
中用户定义的数据类型。它主要用于为uint
分配名称,使程序易于阅读和维护
enum
的一个比较冷门的变量,几乎没什么人用。
// 用enum将uint 0, 1, 2表示为Buy, Hold, Sell
enum ActionSet { Buy, Hold, Sell }
// 创建enum变量 action
ActionSet action = ActionSet.Buy;
pragma solidity ^0.8.4;
contract HelloWeb3{
// 用enum将uint 0, 1, 2表示为Buy, Hold, Sell
enum ActionSet { Buy, Hold, Sell }
// 创建enum变量 action
ActionSet action = ActionSet.Hold;
// enum可以和uint显式的转换 返回ActionSet.Hold = 1
function enumToUint() external view returns(uint){
return uint(action);
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。