Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
d2:opDot的语义是什么?_D - Fatal编程技术网

d2:opDot的语义是什么?

d2:opDot的语义是什么?,d,D,我已经多次提到opDot方法,它允许重载成员访问,也就是点操作符,但是缺少关于它的官方文档。它肯定不会退出,因为std.typecons.Unique利用了它 有人知道opDot是如何使用的吗?为什么没有关于它的文档。这就是为什么它没有被记录下来。不要用它。改用。您可以使用它将特定类型或函数别名为某个类型,以便它可以像该类型一样工作。e、 g struct S { int value; alias value this; } 将使S类型的变量使用S的值字段隐式转换为int。也可

我已经多次提到opDot方法,它允许重载成员访问,也就是点操作符,但是缺少关于它的官方文档。它肯定不会退出,因为std.typecons.Unique利用了它


有人知道opDot是如何使用的吗?为什么没有关于它的文档。这就是为什么它没有被记录下来。不要用它。改用。您可以使用它将特定类型或函数别名为某个类型,以便它可以像该类型一样工作。e、 g

struct S
{
    int value;
    alias value this;
}
将使
S
类型的变量使用
S
字段隐式转换为
int
。也可以通过这种方式别名函数:

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

    alias get this;
}
尽管这可能更具局限性,因为dmd目前不支持为一个类型使用多个
别名this
es(但最终应该是这样)。在这种情况下,您可以将
S
隐式转换为
int
,但不能反向转换。Regardess,
别名此
用于实现隐式转换

如果
别名此
不是您想要的,则另一种可能性是。它允许您将点右侧的内容转换为其他内容(例如,将所有对
foo
的调用转换为
bar
)。但是,在这两者之间,你应该可以用
opt做你想做的任何事情(除此之外还有很多)。

试试这个: