scala進階14-自身型別self type
阿新 • • 發佈:2019-02-19
/** * self不是關鍵字,是this的別名,具有更強的可讀性,無程式碼中的outer => */ class Self { self => val tmp = "Scala" def foo = self.tmp + this.tmp //可以用self和this訪問自身成員 } trait S1 /** * 高階用法: * 1、如下所示,this:S1合在一起,限定建立S2物件時,必須混入S1 * 2、S2的子類也必須混入S1,如S3 */ class S2 { this:S1 => } class S3 extends S2 with S1 trait T {this: S1 => } object S4 extends T with S1 object Self_Types { def main(args: Array[String]): Unit = { class Outer { outer => //outer是Outer.this的別名 val v1 = "Spark" class Inner { println(outer.v1) //這裡也可以是Outer.this.v1(這裡是基本用法) } } val c = new S2 with S1 } }