scala – 使用抽象类型交换类型参数
发布时间:2020-12-16 08:47:58 所属栏目:安全 来源:网络整理
导读:为了避免在子类化参数化类时不得不重复类型参数信息,我试图重写一些代码来改为使用抽象类型. 我想表达的内容类似于: class Group[A]abstract class Thing[A,G : Group[A]] { val group: G}class SomeGroup[A] extends Group[A] { g = object SomeThing exte
为了避免在子类化参数化类时不得不重复类型参数信息,我试图重写一些代码来改为使用抽象类型.
我想表达的内容类似于: class Group[A] abstract class Thing[A,G <: Group[A]] { val group: G } class SomeGroup[A] extends Group[A] { g => object SomeThing extends Thing[A,SomeGroup[A]] { val group = g } } 使用抽象类型,到目前为止我最好的尝试是: class Group { type A } abstract class Thing { t => type A type G <: Group { type A = t.A } val group: G } class SomeGroup extends Group { g => object SomeThing extends Thing { type A = g.A type G = SomeGroup { type A = g.A } val group = g } } 但是,我在最后一行收到编译错误,说“值组具有不兼容的类型”. 如何使用抽象类型编写第一个示例? 解决方法
你需要给类型检查器/推断器一点帮助:
val group : G = g 让它通过. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |