scala 中参数化方法的类型覆盖
我尝试在 scala 中重写我的参数化方法,
我有一个像这样的抽象类:
abstract class Ranking[G <: AbstractGenome, MG <: MultiGoalLike] {
def operate(individuals :IndexedSeq [IndividualMG[G,MG]]):IndexedSeq [IndividualMG[G,MG]
}
我想要两种类型的排名,需要 IndividualMG
的装饰版本:IndividualMG[G,MG] 与 IDistance< /code> 和
IndividualMG[G,MG] 与 IRank
。
我的 IndividualMG
类签名:
class IndividualMG[G <: AbstractGenome,MG <: MultiGoalLike] (val genome: G,val multiGoal:MG)
我的两个排名类:
class Ranking1 [G <: AbstractGenome, MG <: MultiGoalLike] extends Ranking[G,MG] {
override def operate(individuals :IndexedSeq [IndividualMG [G,MG] with IRanking])
:IndexedSeq [IndividualMG [G,MG] with IRanking]= {
return ...
}
class Ranking2 [G <: AbstractGenome, MG <: MultiGoalLike] extends Ranking[G,MG] {
override def operate(individuals :IndexedSeq [IndividualMG [G,MG] with IDistance])
:IndexedSeq [IndividualMG [G,MG] with IDistance] = {
return ...
}
我有一个错误,这是逻辑,因为当我尝试覆盖时类型不同,但我如何验证继承类型 [I
:IndividualMG [G,MG]]
对于我在类Ranking1
和Ranking2
中的两个排名运算符?
谢谢堆栈, SR。
I try to override my parametrized method in scala,
I have an abstract class like this :
abstract class Ranking[G <: AbstractGenome, MG <: MultiGoalLike] {
def operate(individuals :IndexedSeq [IndividualMG[G,MG]]):IndexedSeq [IndividualMG[G,MG]
}
I want two type of ranking which need decorated version of IndividualMG
: IndividualMG[G,MG] with IDistance
, and IndividualMG[G,MG] with IRank
.
My IndividualMG
class signature :
class IndividualMG[G <: AbstractGenome,MG <: MultiGoalLike] (val genome: G,val multiGoal:MG)
My two class for ranking :
class Ranking1 [G <: AbstractGenome, MG <: MultiGoalLike] extends Ranking[G,MG] {
override def operate(individuals :IndexedSeq [IndividualMG [G,MG] with IRanking])
:IndexedSeq [IndividualMG [G,MG] with IRanking]= {
return ...
}
class Ranking2 [G <: AbstractGenome, MG <: MultiGoalLike] extends Ranking[G,MG] {
override def operate(individuals :IndexedSeq [IndividualMG [G,MG] with IDistance])
:IndexedSeq [IndividualMG [G,MG] with IDistance] = {
return ...
}
I have an error, it's logic because type differs when i try to override, but how can i make to verify inheritance type [I <: IndividualMG [G,MG]]
for my two ranking operator in class Ranking1
and Ranking2
?
Thanks stack,
SR.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
怎么样
What about
我认为您正在寻找路径依赖类型。
I think you're looking for a Path dependent type.