欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
Move语言 条件语句 if
通过控制流表达式,我们可以选择运行某个代码块,或者跳过某段代码而运行另一个代码块。
if 表达式允许我们在条件为真时运行代码块,在条件为假时运行另一个代码块。
script {
use 0x1::Debug;
fun main() {
let a = true;
if (a) {
Debug::print<u8>(&0);
} else {
Debug::print<u8>(&99);
};
}
}
这个例子中,当a == true时打印0,当a是false时打印99,语法非常简单:
if (<布尔表达式>) <表达式> else <表达式>;
if是一个表达式,我们可以在 let 声明中使用它。但是像所有其他表达式一样,它必须以分号结尾。
script {
use 0x1::Debug;
fun main() {
// try switching to false
let a = true;
let b = if (a) { // 1st branch
10
} else { // 2nd branch
20
};
Debug::print<u8>(&b);
}
}
现在,b 将根据 a 表达式为变量分配不同的值。但是 if 的两个分支必须返回相同的类型!否则,变量 b 将会具有不同类型,这在静态类型的语言中是不允许的。在编译器术语中,这称为分支兼容性 —— 两个分支必须返回兼容(相同)类型。
if 不一定非要和 else 一起使用,也可以单独使用。
script {
use 0x1::Debug;
fun main() {
let a = true;
// only one optional branch
// if a = false, debug won't be called
if (a) {
Debug::print<u8>(&10);
};
}
}
但是请记住,不能在 let 赋值语句中使用不带分支的表达式!因为如果 if 不满足条件,就会导致变量未被定义,这同样是不允许的。
下一章:Move语言 循环语句
Move语言 循环语句在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。在 Move 中定义循环有两种方法:while 条件循环lo ...
AI 中文社