2013-04-04 71 views
3

我在OCaml的初學者,我有一個問題,一系列的讓利,如:系列就讓定義

let x = myFun y in 
let z = myFun x in 
... 

但是,之間的允許,我使用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」從未使用過。沒有任何問題的最好方法是什麼?謝謝。

回答

4

你必須使用;分離表達式:

e1 ; e2 

e1執行副作用和丟棄結果,然後評估`E2。

所以你的情況:

let x = myFun y in 
Hashtbl.iter (...) ... ; 
let z = myFun x in 
... 
1

請注意,你可以寫

let x = ... in 
    let _ = Hashtbl.iter in ...