我遇到了一些關於opDot方法的提及,它允許超載成員訪問aka點運算符,但它的官方文檔已丟失。它肯定不會退出,因爲std.typecons.Unique使用它。d2:opDot的語義是什麼?
有誰知道,opDot如何使用,爲什麼沒有關於它的文檔?
我遇到了一些關於opDot方法的提及,它允許超載成員訪問aka點運算符,但它的官方文檔已丟失。它肯定不會退出,因爲std.typecons.Unique使用它。d2:opDot的語義是什麼?
有誰知道,opDot如何使用,爲什麼沒有關於它的文檔?
opDot
已經是scheduled for deprecation。這就是爲什麼它沒有記錄。不要使用它。改爲使用alias this
。您可以使用它將特定的類型或函數別名到某個類型,以便它可以像該類型那樣操作。例如
struct S
{
int value;
alias value this;
}
將讓這個S
類型的變量將使用S
的value
場隱式轉換到int
。您也可以別名功能,這種方式:
struct S
{
int get()
{
return 7;
}
alias get this;
}
儘管這可以更限制性的,因爲DMD當前不支持具有多alias this
ES的類型(它應該最終雖然)。在這種情況下,您可以隱式將S
轉換爲int
,但不是相反。 Regarldess,alias this
用於實現隱式轉換。
如果alias this
不是你想要的,那麼另一種可能性是opDispatch
。它允許您將點右側的內容轉換爲其他內容(例如,將所有呼叫轉至foo
爲bar
)。但是,在這兩者之間,你應該能夠做幾乎任何你想用opDot
(以及更多)做的事情。
謝謝,非常明確的答案! – toriningen 2012-03-27 15:53:57
試試這個:http://www.digitalmars.com/d/archives/digitalmars/D/learn/how_to_use_opdot_14509.html – Raxillan 2012-03-27 05:20:11