Ketiga bentuk tersebut valid, dan memiliki efek yang Bdianggap sebagai jenis thisdalam kelas A.
Dua varian pertama
trait A { self: B => ... }
trait A { foo: B => ... }
perkenalkan self(masing-masing, foo) sebagai alias untuk thisin trait A. Ini berguna untuk mengakses thisreferensi dari kelas dalam. Yaitu, Anda kemudian dapat menggunakan selfalih-alih A.thissaat mengakses thisreferensi sifat Adari kelas yang bersarang di dalamnya. Contoh:
class MyFrame extends JFrame { frame =>
getContentPane().add( new JButton( "Hide" ) {
addActionListener( new ActionListener {
def actionPerformed( e: ActionEvent ) {
frame.setVisible( false )
}
})
})
}
Varian ketiga,
trait A { this: B => ... }
tidak memperkenalkan alias untuk this; itu hanya mengatur tipe diri.