嗨,我是OCaml的新手,正在研究一个问题。下面的方法不是我要做的,但是我将代码中的错误缩小到了这个范围。我想知道如果删除x = x *为何可行。 2.0,但是当我添加它时,if语句
出现语法错误let idk (x: float) =
x = x *. 2.0
if (x > 0.0) then true else false ;;
答案 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