我在設計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);
如何實現這樣的效果? 編輯:面向對象的替代品也受到歡迎。
如何爲它添加函數看起來更像繼承?少檢查會更好。我喜歡你從爭論中推斷出這種類型的方式,在這裏很合適。 – 2012-02-06 01:08:36
函數裏面你可以做'final Type(Type){case Type.Integer:... case Type.Message:...}'處理函數。我的意思是(大部分)這些檢查將在結構的定義內部居中,這樣當你想要添加一個類型時,你不需要全部搜索它們。 – 2012-02-06 01:15:16
謝謝,現在我正在使用'final switch'爲了它。 – 2012-02-06 05:47:26