2011-03-28 42 views
2

在Java中,我可以引用特定類的外部實例: 對不起,我的意思是這樣。這個關鍵字與斯卡拉和匿名函數/類

object obj extends SomeOtherClass { 
def myMethodOfSomeInstance = { 
val uiThread = new SomeClass { 
      def run: Unit = { 
      chooser.showOpenDialog(SomeOtherClass.this)    
      } 
     } 
} 

... 此代碼不能編譯,但在這條線,我想引用父實例?我怎麼做?

chooser.showOpenDialog(SomeOtherClass.this)

回答

4

您可以使用封閉對象自我引用,你可以參考一下:

object SomeObject { outer => 
    def myMethodOfSomeInstance = { 
    val uiThread = new SomeClass { 
     def run: Unit = { 
     chooser.showOpenDialog(outer) 
     } 
    } 
    } 
} 

編輯:通過你的申報方式對象必須是object obj extends SomeOtherClass才能成爲有效的scala代碼。然後您可以使用obj.this引用封閉對象。

+0

對不起,你是對的,我的意思是擴展。 – 2011-03-28 17:12:03

+0

'outer'被稱爲*自我類型註釋*。 – Jesper 2011-03-28 20:19:19