Blit.sub
是函数类型的类型别名。但让我们自己去发现吧。我们可以使用
#show
指示输出检查其类型,直到我们得到满意的结果,
# #show String.sub;;
val sub : (Base.String.t, Base.String.t) Base__.Blit.sub
# #show Base__.Blit.sub;;
type ('src, 'dst) sub = ('src, 'dst) Base__.Blit_intf.sub
# #show Base__.Blit_intf.sub;;
type ('src, 'dst) sub = 'src -> pos:int -> len:int -> 'dst
现在让我们替换
'src
和
'dst
参数
string
,因为我们
(string, string) sub
我们得到了
String.sub
String.sub : string -> pos:int -> len:int -> string
如果您使用merlin和合适的代码编辑器,这会容易得多。您可以要求编辑器展开类型,因此需要几毫秒才能到达根,Merlin也会为您执行替换。例如,在我的Emacs中,它只是
C-c C-t
在类型上。同样的情况也适用于可以通过一次按键轻松输入的文档(但在这种情况下不是这样,因为该函数在Base中缺少文档)。您还可以轻松地跳转到函数的定义或声明。因此,如果你想在OCaml中发挥作用,可以考虑建立一个良好的开发环境,比如Emacs、Vim、Visual Studio Code或其他一些环境。