我正在尝试在 OCaml 中编写以下代码:
let a = 0
let b = 1
if a > b then
{
print_endline "a";
print_endline "a";
}
print_endline "b"
然后我遇到了以下错误:
File "[21]", line 4, characters 0-2:
4 | if a > b then
^^
Error: Syntax error
我尝试使用
begin
和 end
关键字。
如果您正在编写一个程序(而不是在 REPL 中乱搞),那么只有某些结构可以存在于您的程序的顶层。
其中之一是绑定。所以下面的就可以了:
let a = 0
let b = 1
但是条件表达式(if/else)是不允许的;也不是任何其他裸露的表达式,其中包括 local 绑定(let ... in ...)。我们可以通过将该表达式绑定到模式来解决这个问题。由于
print_endline
只会返回 ()
,我们可以写:
let () =
...
在这种情况下,您使用
{
和 }
是不正确的,但您可以使用 ;
和 (
和 )
将多个表达式分组。请记住,;
不是“语句终止符”,而是一个分隔符。
let () =
if a > b then (
print_endline "a";
print_endline "a"
);
print_endline "b"
请注意,如果整个表达式返回
if
,则 else
只能在没有匹配 unit
的情况下存在。这符合该标准。