我写了这个例子,非常想知道:
class TestMatch(val i: Int)
object TestMatch extends TestMatch(10){ // <-- Here
def apply(i: Int) = new TestMatch(i)
def unapply(tm : TestMatch): Option[Int] = Some(tm.i)
}
这里发生了什么?我们延长TestMatch(10)
。我们如何扩展使用i = 10
创建的实例f测试匹配?这对我来说没什么意义。或TestMatch(val i: Int)
定义 类型 而不是单一类型。像C ++中的模板一样:
template<int i>
class TestMatch{
//...
}
我被线对象
所吞噬TestMatch扩展 TestMatch(10)
看起来我们扩展了TestMatch(10)
,我认为它是使用construcotr参数TestMatch
创建的i = 10
类型的对象。如果我写了
TestMatch extends TestMatch
它不会编译。
答案 0 :(得分:2)
您没有扩展TestMatch类的实例。以下语法只是将构造函数参数传递给基类。
object TestMatch extends TestMatch(10)