原始类型
在本章中,我们的重点是掌握 Sui 上 Move 的基本知识。
Move 是一种开源编程语言,最初设计用于构建安全智能合约以支持 Diem 区块链。随后,包括 Aptos、Starcoin 以及当然还有 Sui 在内的多个区块链采用了 Move 语言。
与任何标准编程语言一样,Move 也有其一套原始类型,本课将深入探讨这些原始类型。
1. 整数
Move 提供了六种无符号整数类型:u8
、u16
、u32
、u64
、u128
和 u256
。这些类型的取值范围从 0 到由具体类型大小决定的最大值。
类型 | 值范围 |
---|---|
uint8, u8 | 0 到 2^8 - 1 |
uint8, u16 | 0 到 2^16 - 1 |
uint8, u32 | 0 到 2^32 - 1 |
uint8, u64 | 0 到 2^64 - 1 |
uint8, u128 | 0 到 2^128 - 1 |
uint8, u256 | 0 到 2^256 - 1 |
创建一个单元测试来进行一些测试。
#[test]
fun integer_test() {
// 定义变量并设置它们的类型
let a: u8 = 8;
let b: u16 = 18;
let c: u32 = 188;
let d: u64 = 1888;
let e: u128 = 18888;
let f: u256 = 188888;
// 为变量赋值
let g = 100u64;
// 相同整数类型可以进行比较
assert!(d > g, 0);
// 不同类型的比较会导致编译错误
assert!(a < b, 0); // 编译错误!
// 不同类型之间的数学运算也是不允许的
assert!(a + b > 0, 0); // 编译错误!
// 或者您可以与没有类型的直接值进行比较
assert!(c < 200, 0);
}
当您需要在 Move 中处理不同的整数类型时,语言包含 as
操作符。您可以使用 as
将一种整数类型转换为另一种类型。
// 使用 `as` 转换整数类型
assert!(_e < (_f as u128), 0);
2. 布尔值
布尔类型很简单,它们只有两个常量值:true
和 false
。
let a: bool = true;
let b = false;
assert!(a != b, 0);