如何根据Ocaml中的条件分配值?

时间:2011-07-18 21:54:22

标签: ocaml

我想表达以下内容:

if b then
  let value = ... in
else
  let value = .... in
let double = value * 2

但似乎Ocaml不允许这种语法。如果我不想重复let double = value * 2部分,是否必须将value定义为参考?

非常感谢!

2 个答案:

答案 0 :(得分:13)

你的麻烦在于你正在考虑这个(有条件地分配给变量)而不是功能(将名称绑定到表达式的结果):

let value = if b then ... else ... in
let double = value * 2

答案 1 :(得分:1)

如上所述,通常更喜欢功能性方法。

但是,您可能希望使用ocaml的命令功能:

let value = ref 2;;

begin
if 1=2 then
value := 4
else
value := 3
end;
let double = !value * 2

请注意,需要确保if-branch和else-branch中的表达式类型必须相同 - 这里是unit - 否则编译器会抱怨(当然)。