Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

布尔与类型转换

布尔类型与类型转换是 Move 基础类型的重要组成部分。布尔用于条件与逻辑判断;as 用于在不同整数类型之间进行显式转换。

布尔类型

布尔类型 bool 只有两个值:truefalse

逻辑运算符

运算符说明示例
&&逻辑与true && falsefalse
||逻辑或true || falsetrue
!逻辑非!truefalse
module book::bool_example;

#[test]
fun bool_ops() {
    let a = true;
    let b = false;

    assert!(a && !b);     // true && true = true
    assert!(a || b);      // true || false = true
    assert!(!(a && b));   // !(true && false) = true
}

逻辑与 && 和逻辑或 || 支持 短路求值:如果左操作数已经能确定结果,右操作数不会被求值。

类型转换

Move 使用 as 关键字在不同整数类型之间进行显式转换:

module book::casting;

#[test]
fun casting() {
    let x: u8 = 42;
    let y: u64 = (x as u64);
    let z: u128 = (y as u128);
    let w: u256 = (z as u256);

    // 也可以从大类型转到小类型(会截断)
    let big: u64 = 300;
    let small: u8 = (big as u8); // 300 % 256 = 44
    assert_eq!(small, 44);
}

注意:从大类型向小类型转换时会发生截断,高位被丢弃。

小结

  • 布尔类型true/false,支持 &&||!,短路求值
  • 类型转换:使用 as 关键字进行显式转换,大转小会截断