Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 60.4MB ·虚拟内存 1300.0MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
通过控制流表达式,我们可以选择运行某个代码块,或者跳过某段代码而运行另一个代码块。
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 中定义循环有两种方法:while 条件循环lo ...