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

If statement OCaml-if else块中的局部变量?,if-statement,functional-programming,ocaml,If Statement,Functional Programming,Ocaml,如何在if-else块中生成局部变量?(如果在Ocaml中有效) 下面是我在OCaml中尝试执行的C代码示例: if (1 == 1) { return 3; } else { int j = 5; return j; } 这是有效的,但不是很有用 let i=1;; if i = 1 then 3 else ( let j=5 in j ) ;; -:int=3这是有效的,但不是很有用 l

如何在if-else块中生成局部变量?(如果在Ocaml中有效)

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

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

这是有效的,但不是很有用

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

-:int=3这是有效的,但不是很有用

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

-:int=3

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

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

let v = expr1 in expr2
声明一个变量
v
,该变量位于
expr2
的本地。其值(不能更改)由
expr1
给出

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

C代码的合理忠实翻译如下:

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

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

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

let v = expr1 in expr2
声明一个变量
v
,该变量位于
expr2
的本地。其值(不能更改)由
expr1
给出

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

C代码的合理忠实翻译如下:

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

这样看:if-then-else是一个表达式,它被计算并返回一个值。不是这样,而是定义那个结构。尤其是不能定义要在外部使用的变量。请这样看:if-then-else是一个表达式,它被计算并返回一个值。不是这样,而是定义那个结构。尤其是不能定义要在外部使用的变量。