2012-03-26 66 views
8

我遇到了一些關於opDot方法的提及,它允許超載成員訪問aka點運算符,但它的官方文檔已丟失。它肯定不會退出,因爲std.typecons.Unique使用它。d2:opDot的語義是什麼?

有誰知道,opDot如何使用,爲什麼沒有關於它的文檔?

+3

試試這個:http://www.digitalmars.com/d/archives/digitalmars/D/learn/how_to_use_opdot_14509.html – Raxillan 2012-03-27 05:20:11

回答

12

opDot已經是scheduled for deprecation。這就是爲什麼它沒有記錄。不要使用它。改爲使用alias this。您可以使用它將特定的類型或函數別名到某個類型,以便它可以像該類型那樣操作。例如

struct S 
{ 
    int value; 
    alias value this; 
} 

將讓這個S類型的變量將使用Svalue場隱式轉換到int。您也可以別名功能,這種方式:

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

    alias get this; 
} 

儘管這可以更限制性的,因爲DMD當前不支持具有多alias this ES的類型(它應該最終雖然)。在這種情況下,您可以隱式將S轉換爲int,但不是相反。 Regarldess,alias this用於實現隱式轉換。

如果alias this不是你想要的,那麼另一種可能性是opDispatch。它允許您將點右側的內容轉換爲其他內容(例如,將所有呼叫轉至foobar)。但是,在這兩者之間,你應該能夠做幾乎任何你想用opDot(以及更多)做的事情。

+0

謝謝,非常明確的答案! – toriningen 2012-03-27 15:53:57