
如果使用lambda作為參數(shù),則盡量在方法聲明時(shí)使用內(nèi)聯(lián)關(guān)鍵字 inLine 這樣會(huì)減少損耗。、
注意:lambda 表達(dá)式的 最后一行代碼是 表達(dá)式的返回值

將方法作為參數(shù)方法的實(shí)現(xiàn)傳遞使用
methodResponseResult方法 添加 :: 之后 methodResponseResult會(huì)變成函數(shù)類型的對(duì)象。 便可以作為responseResult 參數(shù)的實(shí)現(xiàn)傳入。

函數(shù)返回函數(shù)

匿名函數(shù)與具名函數(shù)

let函數(shù) 函數(shù)內(nèi)部是it 引用, 函數(shù)返回值為代碼最后一行。 函數(shù)可以使用具名函數(shù) 前面加:: 即可

let函數(shù)返回 代碼的最后一行
let 和 apply的區(qū)別

!! 的使用 意思為不管會(huì)不會(huì)空 都執(zhí)行 kotlin 中叫做斷言

空合并操作符 ?: 的使用

apply函數(shù)的使用 函數(shù)內(nèi)部是 this引用 apply函數(shù)返回值為調(diào)用者本身,函數(shù)可以使用具名函數(shù) 前面加:: 即可

run 函數(shù)使用 run函數(shù)內(nèi)部是 this 引用, 返回值為 內(nèi)部代碼最后一行,函數(shù)可以使用具名函數(shù) 前面加:: 即可

with 函數(shù)的使用 函數(shù)是傳入?yún)?shù) 不可以鏈?zhǔn)秸{(diào)用,內(nèi)部持有引用為this 返回值為代碼最后一行

also 函數(shù)的使用 函數(shù)內(nèi)部持有的是it 關(guān)鍵字引用 返回值為調(diào)用者本身。

takeIf 函數(shù)的使用 內(nèi)部持有關(guān)鍵字 it 引用

空合并操作符 ?:

takeUnless 函數(shù)使用 內(nèi)部持有關(guān)鍵字 it 引用


list 集合的創(chuàng)建 和 使用

可變list集合學(xué)習(xí) 不可變的集合,無法完成可變的操作

不可變集合變換可變集合

可變集合變換不可變集合

mutator 函數(shù)學(xué)習(xí) 可以對(duì)集合進(jìn)行非常方便的操作

list 集合 遍歷方式

list 集合 元素解構(gòu)獲取 與過濾

set 集合 創(chuàng)建與元素獲取

set 集合 可變集合創(chuàng)建 與操作

集合轉(zhuǎn)換 去重使用

kotlin 的數(shù)組創(chuàng)建方式

map集合的創(chuàng)建

map集合值的獲取

map 集合的遍歷方式


map集合的可變集合創(chuàng)建 與集合中數(shù)據(jù)的操作方法

kotlin 新建的class 的構(gòu)造方法 中的參數(shù), 必須使用var 或者 val 修飾之后,才能直接使用?。。?如果不修飾,必須要寫參數(shù)去接收才行。


kotlin 多個(gè)構(gòu)造方法 寫法。與調(diào)用, 必須使用關(guān)鍵字constructor 。必須 調(diào)用主構(gòu)造方法。

構(gòu)造函數(shù)中添加默認(rèn)參數(shù)

如果構(gòu)造函數(shù)都有默認(rèn)參數(shù),調(diào)用的時(shí)候,一個(gè)參數(shù)不傳遞,會(huì)優(yōu)先調(diào)用主構(gòu)造參數(shù)。

kotlin init 代碼塊 新建的對(duì)象的時(shí)候,會(huì)優(yōu)先于其他構(gòu)造參數(shù)調(diào)用??梢栽诖a塊中做一些校驗(yàn),并且構(gòu)造方法中的參數(shù)沒有被修飾也能直接使用。
同時(shí) init 的代碼塊的執(zhí)行順序 和 寫在類中的val、var變量 的執(zhí)行順序?yàn)椋赫l寫在前面 誰就會(huì)先執(zhí)行。

懶加載 by lazy 使用: 調(diào)用的時(shí)候 方法才會(huì)開始執(zhí)行。

kotiln 中 open 關(guān)鍵字的 使用
kotlin 中 所有的類 和 類中的函數(shù) 默認(rèn)都是final 修飾的,如果要繼承類、重寫父類方法 都必須在父類中添加關(guān)鍵字open

kotlin 關(guān)鍵字 object 的使用
object 修飾的類 會(huì)自動(dòng)變成一個(gè)單例模式的類 可以直接調(diào)用類中公有的變量和方法。類中的init 模塊中的代碼,想當(dāng)于java 類中的 static 代碼塊。

object 關(guān)鍵字 可以直接 通過匿名類賦值的寫法,對(duì)類的方法進(jìn)行重寫, 這樣用起來不用繼承類,非常方便。

companion 關(guān)鍵字使用 相當(dāng)于 java的 static變量 和static 方法。

kotlin 內(nèi)部類的使用 內(nèi)部類要增加 inner 關(guān)鍵字 才能成為內(nèi)部類 如果不添加 inner 關(guān)鍵字 則為嵌套類,只能外部類調(diào)用內(nèi)部類,內(nèi)部類無法調(diào)用外部類。

kotlin 中 data 關(guān)鍵字的 使用 data 關(guān)鍵字 類似javabean 的用法 默認(rèn)重寫了 toString 方法和 equals 方法 ,可以直接打印 bean中的值, equals 比較的也是 bean 中的每一項(xiàng)的值。


?。?!注意:kotlin data 數(shù)據(jù)類 中的copy 方法調(diào)用只會(huì) 只會(huì)調(diào)用主構(gòu)造方法,會(huì)忽略次構(gòu)造方法。

operator 重載運(yùn)算符 關(guān)鍵字 使用

ktlin 中的 枚舉 enum

enum 類帶參數(shù)的使用

kotlin 的 抽象類 abstract 使用

kotlin 泛型使用

泛型的方法中參數(shù)寫法 傳入?yún)?shù) 與 返回參數(shù) 泛型寫法

泛型的約束 使用關(guān)鍵字 : + 父類即可

泛型添加擴(kuò)展函數(shù)的方式

關(guān)鍵字 vararg 動(dòng)態(tài)參數(shù) 用 這個(gè)關(guān)鍵字修飾之后 可以傳任意數(shù)量的參數(shù)
out 關(guān)鍵字 修飾的變量 只能讀取 不能 修改

關(guān)鍵字 out 和 in
out 關(guān)鍵字修飾的泛型: 父類集合可以接收子類集合的賦值 相當(dāng)于java中的 ? extends T
in 關(guān)鍵字修飾的泛型:子類集合可以接收父類的賦值 相當(dāng)于java中的 ? super T

關(guān)鍵字 reified 使用

kotlin 擴(kuò)展函數(shù)的增加 直接寫一個(gè)方法 方法名使用 類名.[新的方法名] 就可以完成 非常的方便。


kotlin 的let 函數(shù)的 寫法 就是使用了泛型的擴(kuò)展函數(shù) 我們也可以通過對(duì)源碼的閱讀 寫出自己方便使用的擴(kuò)展函數(shù)


kotlin 的擴(kuò)展屬性寫法 必須使用get() 賦值

kotlin 協(xié)程

可空類型函數(shù)擴(kuò)展。

關(guān)鍵字 infix 的使用


kotlin 擴(kuò)展文件使用 類似工具類

kotlin 的 方法重命名

通過使用匿名擴(kuò)展函數(shù)的方法 讓 lambda 函數(shù) 內(nèi)部持有this 引用

list 集合 的map 操作 flatmap 過濾 filter 函數(shù) zip 合并

單例模式 懶漢式 雙重校驗(yàn) 實(shí)現(xiàn) 餓漢式 只需要 object 類名 就可以了

注解使用




對(duì)于擴(kuò)展函數(shù) 泛型 的綜合運(yùn)用 重點(diǎn) lambda 函數(shù)默認(rèn)的 返回值是 方法的最后一行,I.() 這樣的寫法 可以持有 this 引用 。

