Как я понимаю, подпись def bar(x: X#Inner)
требует просто любой экземпляр Inner
для компиляции. Принимая во внимание, что foo(x: this.Inner)
будет компилироваться только с тем же экземпляром класса Outer.Inner
.Типы и типы, зависящие от пути
При чтении Scala in Depth, я ввел этот код в REPL, но я получаю ошибку времени компиляции.
scala> class Outer {
| trait Inner
| def y = new Inner {}
| def foo(x: this.Inner) = null
| def bar(x: X#Inner) = null
| }
<console>:11: error: not found: type X
def bar(x: X#Inner) = null
^
Кроме того, что такое ошибка времени компиляции?
спасибо, @ 0__. Из любопытства, почему вы написали 'def foo (x: this .Inner)' с пробелом между 'this' и' .Inner'? –
@ Одержимость Кевином Мередитом с вертикальным выравниванием похожих линий :) –