2010-02-08 24 views

回答

18

使用比其他的名稱「這個」可以,你有這指的是外圍實例成員類型是有用的。例如,

trait Outer { self => 
    trait Inner { 
    def outer = self 
    } 
} 

優選,

trait Outer { 
    trait Inner { 
    def outer = Outer.this 
    } 
} 
在某些情況下

6

它可以是任何東西:self,this,meep,blah等。它僅在編譯器用於確定要投射到哪個類(在調用方法時)並且實際上不會顯示在字節碼中。

保重命名的時候,因爲當地的標識符覆蓋自定義類型:

trait A { 
    def baz = println("baz!") 
} 
trait B { 
    foo: A => 
    val foo = "hello" 
    // def bar = foo.baz // does not compile because foo is String, not A 
    def bar = foo.substring(1) 
} 
相關問題