let memorize o table = Hashtbl.add table (o :> < >) o
:>
已投放,但我不理解其中的< >
..
答案 0 :(得分:2)
所以< ... >
是OCaml中对象类型的语法。这些方法位于<
和>
内。 < >
是指定无方法的对象类型;因此任何对象类型都可以升级到这种类型。这种类型通常没用,因为你不能对这种类型的值做任何事情(因为在OCaml中没有对象类型的向下转换,你永远不能把它变成可以调用方法的东西)。
在这种情况下,他们使用它作为哈希表的密钥类型。我真的不知道为什么他们这样做。
答案 1 :(得分:1)
< mi: ti>
是具有类型mi
的方法ti
的对象的类型。在这里,您将o
强制转换为没有任何方法的对象,这是所有对象类型的超类型(类似于Java中的Object
)。换句话说,该表应该能够存储任何对象。