В различной литературе по Scala я вижу некоторые аннотации самостоятельного типа, использующие «this», а другие - «self»:
trait A { this: B => ... }
trait A { self: B => ... }
Есть ли реальная разница между использованием «этого» или «себя»? Имеет ли значение какое имя вы используете? Это так же верно?
trait A { foo: B => ... }
trait A { self: B, C => ... }
?with
ключевое слово в аннотации для самостоятельного ввода текста. Напримерtrait A { self: B with C => ... }
_: B =>
для случая не псевдоним для простотыСуществует различие в том, что
this
всегда относится к объекту, определенному самым внутренним шаблоном.Итак, если вы называете свой тип
foo
, вы все равно можете ссылаться на него какthis
(если, конечно, вы не находитесь во внутреннем шаблоне, в этом случаеthis
будете ссылаться на определенный им объект - и если вы не дадите внутренний шаблон самостоятельно набирает то же имя), но, очевидно, не наоборот.источник