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

时间:2015-10-20 03:42:39

标签: if-statement functional-programming ocaml

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

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

if (1 == 1) {
        return 3;
    } else {
        int j = 5;
        return j;
    }

2 个答案:

答案 0 :(得分:3)

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

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

let v = expr1 in expr2

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

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

您的C代码的合理忠实翻译将是这样的:

if 1 = 1 then
    3
else
    let j = 5 in
    j

答案 1 :(得分:1)

这是有效但不是很有用。

let i=1;;
if i = 1 then 
  3 
else ( 
  let j=5 in
  j
) ;;          

- :int = 3