Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复Scala(2.11)中路径相关类型上的类型不匹配错误?_Scala - Fatal编程技术网

如何修复Scala(2.11)中路径相关类型上的类型不匹配错误?

如何修复Scala(2.11)中路径相关类型上的类型不匹配错误?,scala,Scala,我有这样的代码 trait Toy trait Child { type T <: Toy def toys : Seq[T] def play(toys: Seq[T]): Unit } trait Parent { type C <: Child def firstChild: C } trait Home { def parent: Parent def toys: Seq[Parent#C#T] def a

我有这样的代码

trait Toy

trait Child {
    type T <: Toy
    def toys : Seq[T]
    def play(toys: Seq[T]): Unit
}

trait Parent {
    type C <: Child
    def firstChild: C
}

trait Home {
    def parent: Parent
    def toys: Seq[Parent#C#T]
    def apply() = {
        val ts = toys
        parent.firstChild.play(toys)
    }
}

有没有办法在不将所有抽象类型转换为参数类型的情况下修复此错误?

使其编译的一种方法是:

trait Toy

trait Child {
    type T <: Toy
    def toys : Seq[T]
    def play(toys: Seq[T]): Unit
}

trait Parent { parent =>
    type C <: Child
    val firstChild: C
}

trait Home {
    val parent: Parent
    def toys: Seq[parent.firstChild.T]
    def apply() = {
        val ts = toys
        parent.firstChild.play(toys)
    }
}
trait玩具
特质儿童{
T型

类型C使其编译的一种方法是:

trait Toy

trait Child {
    type T <: Toy
    def toys : Seq[T]
    def play(toys: Seq[T]): Unit
}

trait Parent { parent =>
    type C <: Child
    val firstChild: C
}

trait Home {
    val parent: Parent
    def toys: Seq[parent.firstChild.T]
    def apply() = {
        val ts = toys
        parent.firstChild.play(toys)
    }
}
trait玩具
特质儿童{
T型
C型