Следующий пример кода не компилируется с ошибкой, указанной ниже.
class Outer {
class Inner
val instance: Inner = new Inner
def verify(pd: Inner): Boolean = pd == instance
}
class UseOuter(val pdp: Outer) {
def foo: pdp.Inner = pdp.instance
}
class UseCase {
val pdp = new Outer
val user = new UseOuter(pdp)
val i = user.foo
pdp.verify(i)
}
Ошибка:
test.sc:19: type mismatch;
found : UseCase.this.user.pdp.Inner
required: UseCase.this.pdp.Inner
pdp.verify(i)
^
Compilation Failed
Я не совсем уверен, но чтение Внутренние классы предполагает, что это предполагаемое поведение? Конкретно следующее предложение:
В отличие от Java-подобных языков, где такие внутренние классы являются членами
из включающего класса, в Scala такие внутренние классы связаны с
внешний объект.
Если это так, и это действительно желаемое поведение, есть ли способ закодировать это требование в Scala?
Есть несколько похожих вопросов, но все они касаются внутренних типов, а не классов, и предложенные решения не будут применяться.