1

以下签名中的“#”是什么意思?

val insertBefore : #node Js.t -> #node Js.t -> #node Js.t Js.opt -> unit
4

1 回答 1

5

请参阅#-typesOCaml 参考手册部分 ( 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)

经过类型检查。

于 2015-10-09T12:09:31.527 回答