2012-03-26 11 views
8

私はopDotメソッドに関するいくつかの言及を満たしています。メンバーアクセスに別のドット演算子をオーバーロードすることができますが、それについての公式文書はありません。 std.typecons.Uniqueはそれを利用しているので、間違いなく脱落することはありません。d2:opDotのセマンティクスとは何ですか?

誰かが知っていることは、どのようにopDotを使用できるのか、それについてのドキュメントがないのですか?

+3

これを試してください:http://www.digitalmars.com/d/archives/digitalmars/D/learn/how_to_use_opdot_14509.html – Raxillan

答えて

12

opDotscheduled for deprecationであった。だから、それは文書化されていないのです。それを使用しないでください。代わりにalias thisを使用してください。特定の型または関数を型にエイリアスして、その型と同じように動作させることができます。例えばタイプSの変数は暗黙のうちにSvalueフィールドを使用してintに変換するように

struct S 
{ 
    int value; 
    alias value this; 
} 

はそれを行います。 DMDは現在、(それが最終的にかかわらず、必要があります)タイプのために複数のalias this ESを持つサポートしていないので、それは、制限よりかも知れません

struct S 
{ 
    int get() 
    { 
     return 7; 
    } 

    alias get this; 
} 

:あなたはそのようにもエイリアス機能をすることができます。この場合、Sを暗黙的にintにキャストできますが、その逆はできません。 Regarldess、alias thisは、暗黙的な変換を実装するためのものです。

alias thisがあなたの望むものではない場合、別の可能性はopDispatchです。ドットの右側にあるものを他のものに変換できます(例:fooへのすべての通話をbarにする)。しかし、その2つの間で、あなたはopDot(とはるかに多くの)でやっていることを考えていたことはほとんどできます。

+0

ありがとう、非常に明確な答え! – toriningen

関連する問題