在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选项,结果不是可读的。
答案 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
。