'#'是什么意思?在以下签名?
val insertBefore : #node Js.t -> #node Js.t -> #node Js.t Js.opt -> unit
答案 0 :(得分:5)
请参阅OCaml参考手册的#-types
部分(http://caml.inria.fr/pub/docs/manual-ocaml/types.html)。
函数类型#node -> t
获取类node
或其子类的对象,并返回t
。
例如,
class c = object method x = 1 end
let g : #c -> int = fun o -> o#x
函数g
可以使用类c
的对象或其子类。 #c
因此是< x : int; ..>
的缩写,
let h = (g : < x : int; ..> -> int)
是类型检查。