JavaFX學習筆記(03)

2021-07-23 10:04:57 字數 1001 閱讀 2902

現在我先來講一點知識吧

在scala裡,每乙個單例物件a都存在乙個單例型別a.type,這個型別只有兩個值:a和null。

這個特性實際上是非常冷門的乙個特性,實際運用中也比較少見,不過在這裡,我大量的使用了單例型別,依靠不同的單例型別的不同方法簽名進行方法過載,產生不同的動作。這種依靠過載的設計模式有著用模式匹配,if……else等控制語句難以達到的功能,譬如可以擁有不同的返回值等。

trait

insertionable

}def

<<(ty: type.type) = new ins

}class

ins(val ins: insertionable = this)

}

首先是class ins(val ins: insertionable = this),這乙個內部類的主構造器接受乙個insertionable 特質型別的引數,並且預設引數為包含這個內部類的insertionable型別引數自身的引用。這乙個內部類是為了方便《方法構建物件而創。

def

<<(ty: type.type) = new ins

}

這個方法的作用是通過ins :insertionable << type << t: tsbutton.type的形式將ins轉換為sbutton型別。在我們呼叫ins << type的時候,他會返回乙個作為ins類的子類的匿名型別,這個型別包含著由ins類的主構造器得到的ins的引用,同時有乙個<<(tsbutton.type)方法,這裡也是我使用單例型別的核心所在。在以後,需要進行的強制轉換的時候,只需要新增單例物件的數量,並新增新的接受單例型別的函式過載即可。

def

<<(name: name.type) = new ins

}

演算法筆記學習筆記03

2.6 函式 問題 a 習題7 5 字串逆序存放 include includevoid change char a,char b b len 0 int main 問題 b 習題7 7 複製字串中的母音字母 include includevoid select char a,char b b j ...

AspectJ學習筆記 03

方面 方面的定義如下 access specification aspect extends class or aspect name implements inte ce list pointcut 關鍵字aspect申明了乙個方面。每乙個方面都有乙個名字,程式中其他部分可以使用該名字來訪問該方面...

Go學習筆記03

t1.go與main.go在同乙個資料夾下,main函式在main.go中。package main 小寫開頭,未公開的型別 type mytype int func mynew val int mytype 型別公開,部分成員不公開 type mystruct struct user和admin組...