Dアプリケーションの設計に問題があります。たぶん私のアプローチは完全に間違っているので、私はここであなたを救い出す。完全な書き換えを含むすべての提案は、大歓迎です。D型構造の構造体を共通型として扱う
私はいくつかのテンプレートの種類があります。
enum Type : byte { Message='!', Integer='@' }
struct Token (T) {
Type type;
T value;
}
alias Token!string MessageToken;
alias Token!long IntegerToken;
をそして私は一般的に、これらのタイプを処理する必要があります。
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);
どのように私はこの効果を達成できますか? 編集: OOPの代替も歓迎します。
どのように関数を追加できますか?継承のように見えますか?より少ない検査が良いでしょう。私は引数から型を推論する方法が好きです、ここでうまくいきます。 –
関数の中で 'final switch(type){case Type.Integer:... case Type.Message:...}'関数を処理できます。私はそれらのチェックの大部分が構造体の定義の中に集中することを意味していましたので、タイプを追加したいときにそれらをすべて削除する必要はありません –
ありがとう、今私は 'final switch'を使用していますそれのための。 –