我想表达以下内容:
if b then
let value = ... in
else
let value = .... in
let double = value * 2
但似乎Ocaml不允许这种语法。如果我不想重复let double = value * 2
部分,是否必须将value
定义为参考?
非常感谢!
答案 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 - 否则编译器会抱怨(当然)。