【发布时间】:2015-06-02 16:10:38
【问题描述】:
我在 Odersky 的论文(第 2.1 章)中找到了一个关于抽象类型成员的示例:http://lampwww.epfl.ch/~odersky/papers/ScalableComponent.pdf
我把它贴在下面
abstract class AbsCell {
type T
val init: T
private var value: T = init
def get: T = value
def set(x:T):Unit = {value = x}
}
val cell = new AbsCell{ type T=Int; val init=1}
cell.set(cell.get + 1)
cell.get
这些代码在最新的 Scala(Scala 版本:2.11)中无法正常工作。
我发现最后一个表达式cell.get的值是1,而我期望的是2。原因是private var value: T = init不适用于mixin匿名类{ type T=Int; val init=1}。
有人对此有任何想法吗?
【问题讨论】:
-
这个问题没有mixins。这是一个普通的匿名类。另外,我不会放 Java 标记。
标签: scala generics abstract-class mixins