Dans diverses publications Scala, je vois des annotations auto-types utilisant "this" et d'autres utilisant "self":
trait A { this: B => ... }
trait A { self: B => ... }
Y a-t-il une réelle différence entre utiliser «ceci» ou «soi»? Le nom que vous utilisez importe-t-il? Est-ce tout aussi valable?
trait A { foo: B => ... }
trait A { self: B, C => ... }
?with
mot - clé dans l'annotation à saisie automatique. Par exempletrait A { self: B with C => ... }
_: B =>
pour le cas de non-alias pour plus de simplicitéIl y a une différence en ce que
this
fait toujours référence à l'objet défini par le modèle le plus interne.Donc, si vous appelez votre self-type
foo
, vous pouvez toujours vous y référer commethis
(à moins, bien sûr, que vous soyez dans un modèle interne auquel casthis
se référera à l'objet défini par celui-ci - et à moins que vous ne donniez le modèle saisit le même nom) mais évidemment pas l'inverse.la source