-
2 votesanswersviews
抽象类型自我类型覆盖,并且错误“值xxx不是Component.this.T的成员”
错误如下所示: trait Base { type T } trait Component { self: Base => override type T <: MyT val factory: Factory trait Factory { def get_t: T } trait MyT { def xxx: Unit } class User { ... -
1 votesanswersviews
Scala中涉及抽象类型时没有动态绑定?
当我在Martin Odersky的Scala编程中尝试抽象类型的Animal / Food示例时, class Food abstract class Animal { type SuitableFood <: Food def eat(food:SuitableFood) } class Grass extends Food class Cow extends Animal { ... -
0 votesanswersviews
在使用类型参数或泛型时需要运行时多态性吗?
以下是关于“动物吃食物”的故事,还有一只猫吃鱼 . class Food abstract class Animal { type F def eat(food: F) } class Fish extends Food class Cat extends Animal { type F = Fish def eat(fish: F) { println("eat... -
2 votesanswersviews
Scala:ResultSet转换为不同类型的多图
我将在Scala中创建JDBC ResultSet的包装器 .此包装器旨在成为函数 ResultSet => ParticularType .问题是我无法找到制作MultiMaps的通用解决方案 . 这是我获取集合的方式: abstract class CollectionCreator[C] extends (ResultSet => C) { def apply(rs: ... -
0 votesanswersviews
Scala中的抽象类型,变量和类型类
我正在尝试创建一个依赖于用户输入的类型类 . 想象一下,我们有一些案例对象: sealed trait H case object Ha extends H case object Hb extends H 和类型类: trait Foo[A] { def bar: String } object Foo { def bar[A : Foo] = implicitly[Foo[... -
15 votesanswersviews
是否有使用泛型无法实现的scala抽象类型用法的示例?
有两种可能的方式来表达类型的抽象 . abstract class Buffer { type T val element: T } 而是泛型,例如 abstract class Buffer[T] { val element: T } 我理解在不同环境中使用不同方法的可用性的好处 . 但我很感兴趣的是将Abstract Type版本转换为Generic版本是绝对不可能的 . PS... -
2 votesanswersviews
抽象类型与类型参数 - 区别在哪里? [重复]
可能重复:Scala:抽象类型与泛型 第20.6节“Scala编程”的“抽象类型”解释了抽象类型的使用,其示例以下面的结果代码结束: class Food abstract class Animal { type SuitableFood <: Food def eat(food: SuitableFood) } class Grass extends Food class C... -
11 votesanswersviews
scala类构造函数和抽象类型
我想使用抽象类型而不是类型参数 . 在我的泛型类构造函数中,我想要一个泛型类型的参数,但代码不能编译: class SomeOtherClass(val s: S){ type S } scala编译器错误“找不到:类型S” 如果我使用类型参数而不是抽象类型,那么它的工作原理如下: class SomeClass[T](val t: T){ //... } 如果我想在构造函数中... -
8 votesanswersviews
为什么覆盖已经实现的抽象类型是不可能的?
给出以下代码: class A { class B type C <: B trait D } class E extends A { type C = B } class F extends E { override type C = B with D } 为什么Eclipse Indigo IDE中的Scala IDE的演示编译器会出现错误消息 ... -
0 votesanswersviews
广义ADT和抽象类型上的模式匹配无法编译
我在scala中发现了一些奇怪的东西,我可以't quite explain. I'得到一个广义代数数据类型( DbType ),一个特征 FieldAdapter ,抽象类型为U,成员 dbType 类型为 DbType[U] . 由于一些模糊的原因,我无法在成员 dbType 上进行模式匹配,因为编译器会出现以下错误: Pattern type incompatible, found Str... -
223 votesanswersviews
Scala:抽象类型与泛型
我正在读A Tour of Scala: Abstract Types . 什么时候使用抽象类型更好? 例如, abstract class Buffer { type T val element: T } 而是那些泛型,例如, abstract class Buffer[T] { val element: T }