在Ocaml中打印哈希映射的内容

时间:2018-04-10 11:12:28

标签: ocaml hashtable

在Ocaml中打印哈希表内容的最简单方法是什么?我是Ocaml的新手,我看到的一切,直到现在看起来都非常复杂。 举个例子,如果我们生成一个这样的简单哈希表:

# let ht = Hashtbl.create 100;;
# Hashtbl.add ht "x" "a";
  Hashtbl.add ht "x" "b";
  Hashtbl.add ht "y" "c";;

我想像这样打印出来:

# print_hash ht;;

然后得到以下结果:

x:a,b

y:c

我想我必须使用Marshal模块,但实际上并不确切知道如何 因为使用to_string选项,结果不是可读的。

2 个答案:

答案 0 :(得分:1)

一个简单的技巧包括使用Hashtbl.iter

 Hashtbl.iter (fun x y -> Printf.printf "%s -> %s\n" x y) ht;;

给定的函数有第一个参数需要2个参数,它们是键和值。

答案 1 :(得分:1)

这是有效的,假设键和值是字符串:

# let open BatInnerIO in
  BatHashtbl.print write_string write_string stdout ht;;

这会打印一个格式相当整齐的字符串:

{
Key1: Value1,
Key2: Value2
}

如果您的密钥和/或值类型不是字符串,则可以使用BatInnerIO中的其他打印机(例如write_i64)来记下int64,依此类推。

也可以打印到stderr