运算符 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的安全设计,溢出和负数不会让合约产生安全问题,因为程序会终止运行,但是程序终止会给用户带来不好的体验,代码不是很好调试,建议还是做好溢出边界判断