gpt4 book ai didi

d - 如何在更高维度上实现 `opIndex`?

转载 作者:行者123 更新时间:2023-12-04 11:42:53 24 4
gpt4 key购买 nike

struct M{
T opIndex(uint i){ ... }
}

这给了我这个:
m[i]

但是如果我想要它在二维中,我可以这样做:
m[i][j]

有没有办法做到这一点?

最佳答案

是的,您可以使用 C++ 方式返回一个临时对象(在 D 的情况下最好是结构体),该对象也具有索引运算符重载。

但是在 D 中更好的想法是使用语法 m[i, j] :

struct S
{
uint opIndex(uint i, uint j)
{
return i + j;
}
}

void main()
{
S s;
assert(s[2, 3] == 5);
}

如果您还想使用 m[i][j] ,嵌套结构为您提供了一些语法余地:
struct S
{
auto opIndex(uint i)
{
struct Temp
{
uint opIndex(uint j)
{
return i + j;
}
}

return Temp();
}
}

void main()
{
S s;
assert(s[2][3] == 5);
}

关于d - 如何在更高维度上实现 `opIndex`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8570981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com