Her üç form da geçerlidir ve sınıfın B
türü olarak kabul edilen etkiye sahiptir .this
A
İlk iki varyant
trait A { self: B => ... }
trait A { foo: B => ... }
özellik olarak takma ad olarak self
(sırasıyla foo
) tanıtmak . Bu, bir iç sınıftan referansa erişmek için kullanışlıdır . Daha sonra , içinde iç içe bir sınıftan özelliğin referansına erişmek yerine kullanabilirsiniz . Misal:this
A
this
self
A.this
this
A
class MyFrame extends JFrame { frame =>
getContentPane().add( new JButton( "Hide" ) {
addActionListener( new ActionListener {
def actionPerformed( e: ActionEvent ) {
// this.setVisible( false ) --> shadowed by JButton!
frame.setVisible( false )
}
})
})
}
Üçüncü varyant,
trait A { this: B => ... }
için bir takma ad tanıtmaz this
; sadece kendi tipini ayarlar.