我在设计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