haxe-如何自动为原型clone()函数转换类型?

ps

我有一个像这样的原型类:

class CEnumList<T:EnumValue> {
    ...
    public function clone():CEnumList<T> {
        var result:CEnumList<T> = new CEnumList<T>();
        ...
        return result;
    }
}

克隆方法实现创建实例完整副本的标准过程。我有一个继承的类:

class CElements extends CEnumList<EElements> {
    ...
}

其中EElements是枚举类型。但是当我打电话到某个地方时:

var damage:CElements = baseDamage.clone();

我有一个错误“ data.CEnumList应该是data.char.CElements”,这是绝对正确的。但是,如果我继承的类仅因枚举类型不同,该如何继承原型clone()方法?是否应该创建与具有不同类的数量一样多的clone()方法,并且所有这些方法都将仅转换私有基类克隆的类型?

可能根本不是关于haxe的问题,而是关于应用程序体系结构的问题。

安东尼·斯克莱尔(Antony Sklyar)

如果需要精确返回CElement,则可以,您将需要另一个返回CElement的克隆方法。

但是您可能不想扩展CEnumList而是像这样对它进行typedef

typedef CElements = CEnumList<EElements>;

那应该可以解决问题,因为结果将被正确键入(因为类型将是相同的,typedef仅给出一个同义词)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章