当我浏览Dream源代码时,我偶然发现了一个我以前从未见过的运算符(可能在包中定义):
let method_ =
match (method_ :> Method.method_ option) with
| None -> `GET
| Some method_ -> method_
Run Code Online (Sandbox Code Playgroud)
运算符是什么:>,它从哪里来,它有什么作用?
:>是类型子语言中的内置运算符,用于断言子类型关系。所以它不是来自一个包。
在这种特殊情况下,它表示method_可能具有一些更具体的类型,应该将其视为类型Method.method_ option。类型检查器将首先验证 的类型是否method_是指定类型的子类型。
这记录在OCaml 手册第 9 章第 7.7 节中,其中该构造称为“强制”。