Я написал этот пример и был очень удивлялся:Расширения класса в единственном объекте
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)
. Как мы можем расширить тестовое соответствие экземпляра f, созданное с помощью i = 10
? Это не имеет большого значения для меня. Или TestMatch(val i: Int)
определяет набор типов вместо одного типа. Как шаблона в C++:
template<int i>
class TestMatch{
//...
}
Я consufed объектом линии
TestMatch расширяет TestMatch (10)
Похоже, мы расширим TestMatch(10)
, который я думал, был объектом тип TestMatch
, созданный с помощью параметра construcotr i = 10
. Если я написал
TestMatch extends TestMatch
он не скомпилировал.
Не могли бы вы разъяснить свой вопрос? Непонятно, что вы хотите объяснить. –