Эмиль совершенно прав, но вот пример, чтобы прояснить это:
scala> case class A(a: String) {
| case class B(b: String)
| def who(obj: Any) = obj match {
| case B(b) => println("I'm A("+a+").B("+b+").")
| case b: A#B => println("I'm B("+b+") from some A")
| case other => println("Who am I?")
| }
| }
defined class A
scala> val a1 = A("a1")
a1: A = A(a1)
scala> val a2 = A("a2")
a2: A = A(a2)
scala> val b1= a1.B("b1")
b1: a1.B = B(b1)
scala> val b2 = a2.B("b2")
b2: a2.B = B(b2)
scala> a1 who b1
I'm A(a1).B(b1).
scala> a1 who b2
I'm B(B(b2)) from some A
Точнее, эта строка:
case Student(name, major) => name + " studies " + major
действительно означает
case this.Student(name, major) => name + " studies " + major
К сожалению, в то время как Джейн была создана на Джейке, this
в случае Джейн указывает на саму Джейн.