struct M{
T opIndex(uint i){ ... }
}
Run Code Online (Sandbox Code Playgroud)
这给了我这个:
m[i]
Run Code Online (Sandbox Code Playgroud)
但是,如果我想要它在二维中,那么我可以这样做:
m[i][j]
Run Code Online (Sandbox Code Playgroud)
无论如何要做到这一点?
是的,你可以用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);
}
Run Code Online (Sandbox Code Playgroud)
如果您仍想使用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);
}
Run Code Online (Sandbox Code Playgroud)