条件语句

在 Sui 的 Move 中,条件结构是常见的 if ... else ... 表达式。有几种使用 if ... else ... 表达式的方法。

单个 if 表达式

if (a > b) {
    c = a + b;
    d = a - b;
};

如果 true 分支仅包含一行,可以简化为:

if (a > b) c = a + b;

带有 else 的 if 表达式

if (a > b) {
    c = a + b;
    d = a - b;
} else {
    e = a + 1;
};

还有不带大括号的简化版本:

if (a > b) c = a + b else e = a + 1;

多分支表达式

if (a < 0) {
    b = b + 5;
} else if (a < 10) {
    b = b + 10;
};

产生值 条件表达式可以产生值:

let x: u64 = if (a > b) c else d;

在这种情况下,表达式的“返回”值(c 和 d)的类型必须与接收器(x: u64)的类型相同。

else 分支是必要的,如果缺少 else 分支,我们将得到类型不兼容的错误,因为缺少的 else 分支默认为 () 而不是 u64。

如果分支中有多行:

let x: u64 = if (a > b) {
    c = a + b;
    c + 1
} else {
    d = a - b;
    d + 1
};

您可能已经注意到,每个分支的最后一行没有以 ; 结尾。这类似于函数中的返回值。