4
在Scala中,我怎样才能添加容器性状(如Traversable的[内容])到另一个延伸的容器(并因此限制了它的内容的可见度?依赖于性状遗传
例如,代码下面试图限定的性状WithIter用于需要Traversable的一个容器(当然,我有事实上其他事情在容器)
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)发现错误:
有没有简单的方法?
我有点困惑的构造。你不能说:new Instance()。foreach((x:Int)=> x + 1)。你为什么要这样定义它? – 2010-01-20 15:03:05
当您想要某些行为与Int类似但不兼容时(例如,如果您正在定义货币或度量单位),此构造可能很有用。 – 2010-01-20 16:10:28
@Thomas:这不是_my_构造。鉴于问题的'WithIter'定义,这是声明'Instance'的正确方法。 – 2010-01-21 11:30:41