7
struct M{
T opIndex(uint i){ ... }
}
,給了我這樣的:如何在更高維度實現opIndex?
m[i]
,但如果我想在二維什麼,這樣我可以這樣做:
m[i][j]
反正是有這樣做嗎?
struct M{
T opIndex(uint i){ ... }
}
,給了我這樣的:如何在更高維度實現opIndex?
m[i]
,但如果我想在二維什麼,這樣我可以這樣做:
m[i][j]
反正是有這樣做嗎?
是的,您可以使用C++方式來返回一個臨時對象(struct最好在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);
}
呵呵,太好了!我在做'opIndex(uint i,uint j){return opIndex(...); }'這不起作用。謝謝。 – Arlen 2011-12-20 05:07:53