原始类型

在本章中,我们的重点是掌握 Sui 上 Move 的基本知识。

Move 是一种开源编程语言,最初设计用于构建安全智能合约以支持 Diem 区块链。随后,包括 Aptos、Starcoin 以及当然还有 Sui 在内的多个区块链采用了 Move 语言。

与任何标准编程语言一样,Move 也有其一套原始类型,本课将深入探讨这些原始类型。

1. 整数

Move 提供了六种无符号整数类型:u8u16u32u64u128u256。这些类型的取值范围从 0 到由具体类型大小决定的最大值。

类型值范围
uint8, u80 到 2^8 - 1
uint8, u160 到 2^16 - 1
uint8, u320 到 2^32 - 1
uint8, u640 到 2^64 - 1
uint8, u1280 到 2^128 - 1
uint8, u2560 到 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. 布尔值

布尔类型很简单,它们只有两个常量值:truefalse

let a: bool = true;
let b = false;
assert!(a != b, 0);