OCaml-if-else 块中的局部变量?

snc*_*pst 1 ocaml functional-programming if-statement

如何在 if-else 块中创建局部变量?(如果这在 Ocaml 中有效)

以下是我在 OCaml 中尝试执行的 C 示例代码:

if (1 == 1) {
        return 3;
    } else {
        int j = 5;
        return j;
    }
Run Code Online (Sandbox Code Playgroud)

Jef*_*eld 5

您必须意识到 OCaml 中的变量是不可变的,即它们在声明时绑定到一个值,并且该值永远不会改变。

如果您对“变量”的含义感到满意,那么您可以在表达式可以出现的任何地方声明局部变量。形式的表达

let v = expr1 in expr2
Run Code Online (Sandbox Code Playgroud)

声明一个v本地变量expr2。它的值(永远不能改变)由 给出expr1

您可以在任何地方使用这种表达式,因此可以在 if 表达式中使用它。

C 代码的相当忠实的翻译将是这样的:

if 1 = 1 then
    3
else
    let j = 5 in
    j
Run Code Online (Sandbox Code Playgroud)