2013-07-17 31 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