有没有办法让一个案例类接受在混入的特征中定义的类型? 当我尝试用普通类做什么时,它会失败:
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会选择这样做,但我会感谢一些帮助来规避这个恼人的错误。
答案 0 :(得分:4)
这是因为类型别名超出了范围:
// error: not found: type Bar
class Foo(val bar: Bar) { type Bar = String }
而是尝试:
class Foo(val bar: Foo#Bar) { type Bar = String }