ทั้งสามรูปแบบที่ถูกต้องและมีผลกระทบที่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 ) {
frame.setVisible( false )
}
})
})
}
ตัวแปรที่สาม
trait A { this: B => ... }
ไม่แนะนำนามแฝงสำหรับthis
; เพียงแค่ตั้งค่าประเภทตนเอง