If-Else & 循环
ReScript 支持 if,else,三目运算符(a ? b : c),for 循环和 while 循环。
ReScript 还支持十分强大的模式匹配,我们将用一个专门的章节介绍它。
If-Else & 三目运算符
与它的 JavaScript 对应不同,ReScript的 if 是一个表达式;它们对表达式体中的内容进行求值:
注意:没有 else 分支的 if-else 表达式隐式给出了 ()(unit 类型)作为 else 分支的值。所以:
和以下代码基本相同:
从另一个角度看这个特性,这显然是错误的:
RESlet result = if showMenu {
1 + 2
}
它会抛出一个类型错误,隐含的 else 分支的类型是 unit,而 if 分支的类型是 int。直观地说,这样做是有道理的:如果 showMenu 是 false,那 result 的值又应该是什么呢?
我们还提供了三目运算符,作为语法糖,但是我们鼓励你优先使用 if-else 表达式。
if-else 和三目运算符在 ReScript 中的使用比其他语言少得多;模式匹配消灭了一整类以前需要条件表达式的代码。
for 循环
for 循环从一个起始值迭代到终止值(包括终止值)。
你可以通过使用 downto 让 for 从大到小计数。
while 循环
while 循环在其条件为 true 时执行 body 代码块。
技巧和诀窍
在 ReScript 中没有跳出循环的 break 关键字(也没有从函数中提前返回的 return)。然而,我们可以通过使用一个可变绑定来轻松地脱离一个 while 循环。