gpt4 book ai didi

scala - 用抽象类型交换类型参数

转载 作者:行者123 更新时间:2023-12-01 02:40:23 25 4
gpt4 key购买 nike

为了避免在对参数化类进行子类化时重复类型参数信息,我试图重写一些代码以使用抽象类型。

我想表达的类似于:

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

让它通过。

关于scala - 用抽象类型交换类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8619465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com