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 循环。