Ocaml、継承で「オブジェクト(self: something)」とはどういう意味ですか?
class tcp_messaging my_address my_cookie (drop_it: drop_function) =
....
object(self : # messaging )
Ocaml、継承で「オブジェクト(self: something)」とはどういう意味ですか?
class tcp_messaging my_address my_cookie (drop_it: drop_function) =
....
object(self : # messaging )
クラス名の前のシャープ記号は、少なくともクラスの型を含むクラス型を示しているため、多かれ少なかれインターフェイスの表示です。
Ocaml には、その実装でオブジェクトを参照するための特別なキーワードがありません (this
たとえば、C++ のキーワードのように)。代わりに、オブジェクト インスタンスを参照するために使用される名前を定義するための柔軟な構文を提供します (この場合は名前self
が使用されます)。このネーミングは実際には一般的に使われているようで (一種の慣習です)、よく見かけます。
基本的に、その構文では、オブジェクトを名前にバインドし、その名前に制約を追加して、実装が少なくともその型を実装する必要があるようにします。がなければ#
、クラスの実装は正確にそのタイプである必要があります。
ちなみに、self
オブジェクト自体の値をバインドします。次のマニュアルをお読みください。
object(self)
現在のオブジェクトに値を定義します。
この: #messaging
ビットは、 interface を実装していることを示していますmessaging
。