2011-12-20 8 views

risposta

8

Sì, si può fare il modo C++ di restituire un oggetto temporaneo (struct è la cosa migliore nel caso in cui D's), che ha anche un sovraccarico operatore di indice.

Ma un'idea migliore in D è di andare per la sintassi m[i, j]:

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

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

Se si vuole ancora utilizzare m[i][j], una struct nidificato ti dà qualche margine di manovra sintattico:

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); 
} 
+0

hehe, simpatico! Stavo facendo 'opIndex (uint i, uint j) {return opIndex (...); } 'che non funzionava. Grazie. – Arlen

Problemi correlati