Sono in difficoltà nella progettazione di un'app D. Forse il mio approccio è completamente sbagliato, quindi vengo qui per salvarmi. Qualsiasi suggerimento, inclusa la riscrittura completa, è il benvenuto.Gestione di strutture con modelli D come tipo comune
Ho alcuni tipi templated:
enum Type : byte { Message='!', Integer='@' }
struct Token (T) {
Type type;
T value;
}
alias Token!string MessageToken;
alias Token!long IntegerToken;
E ho bisogno di gestire questi tipi genericamente:
AnyToken genToken(bool cond) {
if (cond)
return MessageToken(Type.Message, "nighly builds");
else
return IntegerToken(Type.Integer, -42);
}
AnyToken a = genToken(true);
AnyToken b = genToken(false);
Come faccio a ottenere questo effetto? Modifica: Anche le alternative OOP sono benvenute.
Come posso aggiungere funzioni perché assomiglia più all'ereditarietà? Meno esami saranno migliori. Mi piace il modo in cui deduci il tipo dall'argomento, si adatta bene qui. –
all'interno della funzione è possibile eseguire l'opzione finale (tipo) {caso Tipo.Intero: ... caso Tipo.Messaggio: ...} 'Gestisci la funzione. Intendevo che (la maggior parte) quegli assegni sarebbero stati centrati all'interno della definizione della struttura in modo tale che quando si desidera aggiungere un tipo non si debbano cacciarli tutti giù –
Grazie, ora sto usando l'opzione finale per questo. –