数学运算后的if语句OCaml中的语法错误

时间:2019-01-15 23:57:08

标签: ocaml

嗨,我是OCaml的新手,正在研究一个问题。下面的方法不是我要做的,但是我将代码中的错误缩小到了这个范围。我想知道如果删除x = x *为何可行。 2.0,但是当我添加它时,if语句

出现语法错误
let idk (x: float) =
x = x *. 2.0
if (x > 0.0) then true else false ;;

1 个答案:

答案 0 :(得分:2)

我怀疑您认为x = x *. 2.0是一条更改x值的语句。但是在OCaml中,变量的值无法更改。

在OCaml表达式中,=是相等比较运算符。因此x = x *. 2.0是一个布尔表达式。也就是说,它是对还是错。

由于您实际上并不希望彼此后接两个表达式,因此语法错误的详细信息可能没有用。

尽管您不能更改变量的值,但是可以拥有任意数量的局部变量。声明局部变量的方式如下:

let my_local_variable = expression1 in expression2

要获得远看效果(我认为),可以编写如下内容:

let idk (x: float) =
   let local_x = x *. 2.0 in
   if (local_x > 0.0) then true else false