在单例对象中扩展类

时间:2016-08-14 13:56:20

标签: scala class object singleton

我写了这个例子,非常想知道:

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

它不会编译。

1 个答案:

答案 0 :(得分:2)

您没有扩展TestMatch类的实例。以下语法只是将构造函数参数传递给基类。

 object TestMatch extends TestMatch(10)