Є різниця в тому, що this
завжди посилається на об'єкт, визначений найпотаємнішим шаблоном.
Вираз this
може відображатися в частині висловлювань шаблону або типу сполуки. Це означає, що об'єкт визначається самим внутрішнім шаблоном або типом сполуки, що додає посилання. Якщо це складний тип, то тип такого this
типу з'єднання. Якщо шаблон класу або об'єкта визначення з простим ім'ям C , тип це те ж саме , як тип C . this
. (Scala Ref. §6.5)
Отже, якщо ви називаєте свій тип власного типу foo
, ви все ще можете посилатися на нього як this
(якщо, звичайно, ви не знаходитесь у внутрішньому шаблоні, в цьому випадку this
буде посилатися на визначений ним об'єкт - і якщо ви не надасте внутрішній введіть однотипну шаблону), але, очевидно, не навпаки.