首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未使用的变量与let ()和let _?

未使用的变量与let ()和let _?
EN

Stack Overflow用户
提问于 2022-01-01 08:31:13
回答 1查看 129关注 0票数 0

假设我有一堆嵌套的let...in语句。我注意到如果我有

代码语言:javascript
运行
复制
(* a bunch of let... in above *)
let test = expr1 in
(* a bunch of let ... in below *)

我得到了这个Error (warning 26): unused variable test,但是当我将它更改为let _ = expr1 in ...let () = expr1 in ...时,就没有错误消息了。

我知道let _ =是任何类型单元的模式匹配,而let () =是任何类型单元的模式匹配,但这是否意味着我的expr1只是在任何地方被执行?叫过一次吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-01 09:12:37

有一个非常简单的实验,你可以做这样的测试:

代码语言:javascript
运行
复制
let test = print_endline "named";;
let _ = print_endline "any pattern";;
let () = print_endline "unit";;

正如您所看到的,无论您将其放入源文件并编译它,还是在toplevel中运行它,它都会精确地打印每个字符串一次。

OCaml是一种严格评估(更具体地说,是按值调用)具有副作用的语言,这意味着它将按顺序计算表达式,而不是优化具有潜在副作用的代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70547726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档