Ocaml中的“object(self:something)”是什么意思,继承?
class tcp_messaging my_address my_cookie (drop_it: drop_function) =
....
object(self : # messaging )
Ocaml中的“object(self:something)”是什么意思,继承?
class tcp_messaging my_address my_cookie (drop_it: drop_function) =
....
object(self : # messaging )
类名前面的尖号表示至少包含类的类型的类类型,所以它或多或少是一个接口表示。
Ocaml 在其实现中没有特殊的关键字来引用对象(例如this
C++ 中的关键字)。相反,它提供了一种灵活的语法来定义将用于引用对象实例的名称(在这种情况下使用名称self
)。看来这个命名实际上是普遍使用的(这是一种实践),所以你会经常看到它。
所以基本上,该语法允许您将对象绑定到一个名称,并在该名称上添加一个约束,以便实现必须至少实现该类型。如果没有#
,则类实现将需要完全属于该类型。
顺便说一句,self
绑定对象本身的值。阅读以下手册。
object(self)
定义当前对象的值。
该: #messaging
位表示它实现了接口messaging
。