Scala - 继承类型的案例类

时间:2015-07-15 17:52:32

标签: scala inheritance types mixins

有没有办法让一个案例类接受在混入的特征中定义的类型? 当我尝试用普通类做什么时,它会失败:

trait myTypes{
    type aType = Array[String]
}

abstract class ParentClass extends myTypes{
    //no issue here
    val a:aType = Array.fill[String](7)("Hello")
}

//error: not found: type aType
case class ChildClass(arg:aType) extends ParentClass

//error: not found: type aType
case class ChildClass2(arg:aType) extends myTypes

不确定为什么Scala会选择这样做,但我会感谢一些帮助来规避这个恼人的错误。

1 个答案:

答案 0 :(得分:4)

这是因为类型别名超出了范围:

// error: not found: type Bar
class Foo(val bar: Bar) { type Bar = String }

而是尝试:

class Foo(val bar: Foo#Bar) { type Bar = String }