सभी तीन रूप मान्य हैं, और इसका प्रभाव वर्ग B
के प्रकार के रूप में माना जाता है ।this
A
पहले दो वेरिएंट
trait A { self: B => ... }
trait A { foo: B => ... }
विशेषता में एक उपनाम के रूप में self
(क्रमशः foo
) परिचय । यह एक आंतरिक वर्ग से संदर्भ तक पहुँचने के लिए उपयोगी है । यानी तब आप तब उपयोग कर सकते हैं जब किसी वर्ग से इसके संदर्भ का उपयोग करते हुए इसके भीतर नेस्टेड हो। उदाहरण: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 )
}
})
})
}
तीसरा संस्करण,
trait A { this: B => ... }
के लिए एक उपनाम पेश नहीं करता है this
; यह सिर्फ आत्म प्रकार सेट करता है।