系列定义

时间:2013-04-04 20:10:09

标签: functional-programming ocaml let

我是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”从未使用过。没有任何问题,最好的方法是什么?感谢。

2 个答案:

答案 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 ...