【发布时间】:2012-03-26 21:21:33
【问题描述】:
我遇到过几次关于 opDot 方法的提及,该方法允许重载成员访问(也称为点运算符),但缺少它的官方文档。它肯定不会被丢弃,因为 std.typecons.Unique 会使用它。
有谁知道,如何使用 opDot,以及为什么没有关于它的文档?
【问题讨论】:
标签: d
我遇到过几次关于 opDot 方法的提及,该方法允许重载成员访问(也称为点运算符),但缺少它的官方文档。它肯定不会被丢弃,因为 std.typecons.Unique 会使用它。
有谁知道,如何使用 opDot,以及为什么没有关于它的文档?
【问题讨论】:
标签: d
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 thises(它最终应该是这样)。在这种情况下,您可以将S 隐式转换为int,但不能反过来。尊敬的,alias this 旨在实现隐式转换。
如果alias this 不是您想要的,另一种可能性是opDispatch。它允许您将点右侧的内容转换为其他内容(例如,将对foo 的所有调用转换为bar)。但是,在这两者之间,您应该能够使用opDot 做几乎任何您想做的事情(除此之外还有很多)。
【讨论】: