Her üç form da geçerlidir ve sınıfın Btürü olarak kabul edilen etkiye sahiptir .thisA
İ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:thisAthisselfA.thisthisA
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.