Scala型別 9 自身型別 this別名

2021-06-28 20:58:27 字數 627 閱讀 3229

trait

a

this也可替換為self或其它不是關鍵字的別名。

指定可以混入的類的超類。這個特質只能混入給定型別的子類中。

注:特質extends乙個類時,可以保證其混入的類都是該類的子類;而特質指定自身型別時,可以保證它只能混入該類的子類。

class

a

class中的自身型別讓類抽象了-該類在例項化時必須滿足exception;相當於構造乙個復合型別(a with exception)。

通常情況,自身型別(self type)是在特質(trait)中的。

自身型別宣告為復合型別:

this: x with y with z =>
自身型別宣告為結構型別:

this:  =>
class

a

「self」可以為除this&關鍵字外的任何字元;因其只是this的別名而已,this也是可以使用的;兩者是等價的。

self => 這種寫法只是自身型別的一種特殊方式。

scala 集合型別

iterable 是序列 seq 集 set 對映 map 的特質 序列式有序的集合如陣列和列表 集合可以通過 方法確定對每個物件最多包含乙個 對映包含了鍵值對映關係的集合 列表快取 使用listbuffer代替list 另乙個理由是為了避免棧溢位的風險 陣列快取 arraybuffer需要先從可變...

Scala 型別引數

型別引數是什麼?型別引數其實就類似於j a中的泛型。先說說 j a 中的泛型是什麼,比如我們有 list a new arraylist 接著a.add 1 沒問題,a.add 2 然後我們 a.get 1 2 對不對?肯定不對了,a.get 1 獲取的其實是個 string 2 string 2 ...

Scala 型別引數

型別引數是什麼?型別引數其實就類似於j a中的泛型。先說說 j a 中的泛型是什麼,比如我們有 list a new arraylist 接著a.add 1 沒問題,a.add 2 然後我們 a.get 1 2 對不對?肯定不對了,a.get 1 獲取的其實是個 string 2 string 2 ...