Я вроде как новичок в scala, и я придумал этот код, когда пытался узнать синтаксис совпадений, первый код - это то, что я сделал с его ошибкой, а второй - как я ее исправил.
Кто-нибудь знает, почему мне нужно добавить член "имя" в мой класс?
trait T
class A (name: String) extends T
case class B (cls: A)
object Main {
def main(args: Array[String]) {
val a: A = new A("John")
val b: B = new B(a)
checkType(b)
}
def checkType(cls: AnyRef) {
cls match {
case B(input) => println("your name is " + input.name)
case _ => println("others")
}
}
}
приведенный выше код выдает мне ошибку: «имя значения не является членом A»
Теперь, если я изменю класс А на этот:
class A (n: String) extends T
{
var name: String = n
}
вывод будет "ваше имя Джон" (что я и ожидал)
P.S: если я изменю класс А на класс дел, проблема решается, почему?