Ho strutture e classi che mi piacerebbe poter creare facilmente da stringhe in modo generico, usando il metodo to!T(string)
. Tuttavia, non sono sicuro di come "sovrascrivere" il metodo per ottenere questo tipo di comportamento. Andare dal mio tipo alla stringa è facile (vorrei solo definire opCast(string)
), ma è quello che sto cercando anche possibile?Ignora su! T() per T-D definito utilizzato in D?
9
A
risposta
11
Non definire un opCast
per string
se si desidera convertire il tipo in string
. Questo è ciò che è toString
. writeln
e format
e l'uso come toString
, senza fusione o to
, e to
utilizzerà toString
, quindi è sicuramente meglio per definire toString
per la conversione a string
. Si definisce opCast
per la conversione in tipi altro rispetto a string
. Quindi puoi usarlo con il casting o con to
.
Ora, se si desidera convertire un string
nel tipo definito dall'utente, è sufficiente definire il costruttore appropriato e questo funzionerà con to
.
import std.conv;
struct S
{
int i;
this(string s)
{
i = to!int(s);
}
string toString()
{
return to!string(i);
}
}
void main()
{
auto s = to!S("42");
assert(s.i == 42);
auto t = to!string(s);
assert(t == "42");
}
Problemi correlati
- 1. IE8 ignora td width, lavora su IE7
- 2. in python d non definito.
- 3. Fibre su fili in D
- 4. Perché pointer_traits non è definito per "T * const"?
- 5. ignora l'ordinamento su una particolare colonna tablesorter
- 6. Repository per Maven plug dipendenza definito nel pom non viene utilizzato
- 7. Ignora su commit in TortoiseHg
- 8. Programmazione in D per OpenBSD
- 9. in D
- 10. max-width 50% per td
- 11. Inoltro perfetto in D?
- 12. Numpy Dot Prodotto di due array 2-d in numpy per ottenere un array 3-d
- 13. Ordinamento basato su array associativi in D
- 14. Supporto D per COM
- 15. Ignora tastiera su IPAD
- 16. perché% d sta per Integer?
- 17. reindirizza all'URL facendo clic su td space
- 18. Converti colonne TD in righe TR
- 19. Td height su due tabelle separate
- 20. Can a td be inside a td
- 21. In java -D cosa significa la D?
- 22. Cosa è (\ d +)/(\ d +) in regex?
- 23. Iterate attraverso una tabella trovando un td per classe e cambiando il testo per quel td
- 24. Perché IEnumerable <T> è definito come IEnumerable <out T>, non IEnumerable <T>
- 25. anatra digitando D
- 26. Elegante sovraccarico dell'operatore in D
- 27. Cast oggetto su T
- 28. L'intervallo all'interno di td non sovrascrive lo stile td
- 29. ignora accensione OnItemSelectedListener su crea
- 30. Maven ignora JAVA_HOME su OSX?
Fantastico, non sapevo che era così semplice! –