2013-07-17 60 views
2

我在ocaml中有一個哈希表,我想將這個整個哈希表作爲值字段存儲在Berkeley DB中。所以我想用Marshal.to_string來編組哈希表。這會返回一個字符串,但是當我嘗試使用Marshal.from_string解組相同的字符串時,會拋出一個異常。 關於這裏的問題的任何想法是?在ocaml中編組哈希表

+2

拋出了什麼異常?表中的鍵和值的類型是什麼? –

回答

5

你必須註解你正在編組的值的類型。像這樣(頂級):

type t = (string, string) Hashtbl.t;; 

let key = "key" in 
let t_original : t = Hashtbl.create 1 in 
Hashtbl.add t_original key "value"; 
let t_marshalled = Marshal.to_string t_original [] in 
let t_unmarshalled : t = Marshal.from_string t_marshalled 0 in 
assert ((Hashtbl.find t_original key) = (Hashtbl.find t_unmarshalled key));; 
+0

謝謝。它工作正常。 – user2592026

+0

不客氣:) – lebowski