假设我有一个on_event函数,它接受在事件发生时调用的处理函数。现在我想写几个不同的事件处理函数,我可以传递给on_event函数。是否可以在on_event文件中指定签名类型,然后我可以将其设置为这些其他函数的签名(在mli文件中)?这样,如果我需要更改签名,我只需要在一个地方进行。
答案 0 :(得分:2)
您可以为类型命名:
type handler = int -> unit
如果将此定义放入名为event.ml的模块中,则其他模块可将该类型命名为Event.handler
。
请注意,OCaml几乎在所有情况下都会推断出类型。您通常不需要为函数指定类型。但它作为文档很好。
<强>更新强>
这是在定义函数时指定函数类型的一种方法:
let (f: handler) = fun n -> Printf.printf "%d\n" n