ocaml - 数学运算后的 if 语句 OCaml 中的语法错误
问题描述
嗨,我是 OCaml 的新手,正在解决一个问题。下面的方法不是我必须做的,但我已将代码中的错误缩小到这一点。我想知道如果我拿走 x = x * 为什么它会起作用。2.0 但是当我添加它时,我在 if 语句上得到一个语法错误
let idk (x: float) =
x = x *. 2.0
if (x > 0.0) then true else false ;;
解决方案
我怀疑您正在考虑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
推荐阅读
- c++ - 错误:“。”之前的预期不合格 ID 令牌
- postgresql - 获取大序列的下一个值并插入
- mongodb - 使用关系模型上的 where 子句获取数据
- vue.js - 半甜甜圈百分比值
- security - NGINX SSL 仅针对特定域有错误 ERR_SSL_VERSION_OR_CIPHER_MISMATCH
- awk - 在 sed 中的第一个匹配后删除 n 行
- c# - 多个客户端和一个服务器 Blazor 资产冲突
- python - 无法在 Pycharm 中使用来自 pywin32 的 win32gui 模块
- nginx - nginx将某个站点从http重定向到https不起作用
- javascript - 我有 html 网站文件夹。我必须在 iframe 中动态加载该网站,保持 src 属性为空