struct M{
T opIndex(uint i){ ... }
}
给了我这个:
m[i]
但是,如果我想要它在二维中,那么我可以这样做:
m[i][j]
无论如何都要这样做?
答案 0 :(得分:8)
是的,你可以用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);
}