2

Ocaml、継承で「オブジェクト(self: something)」とはどういう意味ですか?

class tcp_messaging my_address my_cookie (drop_it: drop_function) =
....
object(self : # messaging )
4

3 に答える 3

3

クラス名の前のシャープ記号は、少なくともクラスの型を含むクラス型を示しているため、多かれ少なかれインターフェイスの表示です。

Ocaml には、その実装でオブジェクトを参照するための特別なキーワードがありません (thisたとえば、C++ のキーワードのように)。代わりに、オブジェクト インスタンスを参照するために使用される名前を定義するための柔軟な構文を提供します (この場合は名前selfが使用されます)。このネーミングは実際には一般的に使われているようで (一種の慣習です)、よく見かけます。

基本的に、その構文では、オブジェクトを名前にバインドし、その名前に制約を追加して、実装が少なくともその型を実装する必要があるようにします。がなければ#、クラスの実装は正確にそのタイプである必要があります。

于 2013-01-28T16:52:17.477 に答える
2

ちなみに、selfオブジェクト自体の値をバインドします。次のマニュアルをお読みください。

于 2013-01-28T14:55:53.280 に答える
1

object(self)現在のオブジェクトに値を定義します。

この: #messagingビットは、 interface を実装していることを示していますmessaging

于 2013-01-28T14:57:08.227 に答える