运算符 as

as 在move 中有两个用法

  • 给包取别名
module book::m_as1 {
    use 0x1::vector::{
        Self as v,
        empty as empty_vec
    };

    fun main() {
        // `empty` imported as `empty_vec`
        let vec = empty_vec<u8>();

        // Self as V = vector
        v::push_back(&mut vec, 10);
    }
}
  • 整型类型转换 语法 (整型A as 整型 B) 当需要比较值的大小或者当函数需要输入不同大小的整型参数时,你可以使用as运算符将一种整型转换成另外一种整型 注意就是括号是一定不能省的
module book::op_as {
    fun main(){
        let _a:u64 = (10u8 as u64);
        let _b:u8 = (_a as u8);
    }
}

+ - * / 加 减 乘 除

  • 加法运算符 +
  • 减法运算符 -
  • 乘法运算符 *
  • 除法运算符 /
module book::op_arith {

    fun main(){
        let _add_op = 1 + 1;
        let _mut_op = 1*1;
        let _minu_op = 100 -1;
        let _div_op = 100/1;
    }

}

注意事项 因为Move没有负数做减法一定要检查是否产生负数 做加法乘法注意 溢出报错 Move没有浮点数 ,除法小心精度丢失问题 得益于Move的安全设计,溢出和负数不会让合约产生安全问题,因为程序会终止运行,但是程序终止会给用户带来不好的体验,代码不是很好调试,建议还是做好溢出边界判断

其他运算付