我是OCaml的初学者,我有一系列let的问题,比如:
let x = myFun y in
let z = myFun x in
...
但是,在let之间,我使用Hashtbl.iter和其他返回单位的函数。如果我这样做:
let x = myFun y in
Hashtbl.iter (...) ...
let z = myFun x in
...
编译器引发错误。但是,如果我这样做:
let x = myFun y in
let h = Hashtbl.iter (...) ...
let z = myFun x in
...
编译器不会引发任何错误,只是警告显示“h”从未使用过。没有任何问题,最好的方法是什么?感谢。
答案 0 :(得分:4)
您必须使用;
分隔表达式:
e1 ; e2
这会在e1
中执行副作用并丢弃结果,然后评估`e2。
所以在你的情况下:
let x = myFun y in
Hashtbl.iter (...) ... ;
let z = myFun x in
...
答案 1 :(得分:1)
请注意,您可以写
let x = ... in
let _ = Hashtbl.iter in ...