gpt4 book ai didi

scala - 特质继承中的依赖

转载 作者:行者123 更新时间:2023-12-05 00:42:24 25 4
gpt4 key购买 nike

在 Scala 中,如何将容器特征(如 Traversable[Content])添加到另一个扩展容器的特征(因此其内容的可见性有限?

例如,下面的代码试图为需要 Traversable 的容器定义一个 trait WithIter(当然,我实际上在容器中有其他东西)。

import scala.collection._

trait Container {
type Value
}

trait WithIter extends Container with immutable.Traversable[Container#Value]

class Instance extends WithIter {
type Value = Int
def foreach[U](f : (Value) => (U)) : Unit = {}
}

编译器(scalac 2.8.0.Beta1-RC8)发现错误:

error: class Instance needs to be abstract, since method foreach in trait GenericTraversableTemplate of type [U](f: (Container#Value) => U)Unit is not defined



有什么简单的方法吗?

最佳答案

class Instance extends WithIter {
type Value = Int
def foreach[U](f : (Container#Value) => (U)) : Unit = {}
}

如果不指定 OuterClass#说到内部类,那么 this. (即,特定于实例的)将被假定。

关于scala - 特质继承中的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2100709/

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