kotlin lambda 作為參數(shù)傳遞學(xué)習(xí)2022-06-30

image.png

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


image.png

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


image.png

函數(shù)返回函數(shù)
image.png

匿名函數(shù)與具名函數(shù)
image.png

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


image.png

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

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


image.png

空合并操作符 ?: 的使用


image.png

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

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


image.png

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

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

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

空合并操作符 ?:
image.png

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


image.png
image.png

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


image.png

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

image.png

不可變集合變換可變集合


image.png

可變集合變換不可變集合


image.png

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

list 集合 遍歷方式
image.png

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


image.png

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

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

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

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

map集合的創(chuàng)建
image.png

map集合值的獲取


image.png

map 集合的遍歷方式
image.png

image.png

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

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

image.png

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


image.png

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

image.png

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

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í)行。
image.png

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

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

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

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

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

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

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

image.png

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

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

ktlin 中的 枚舉 enum
image.png

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

kotlin 的 抽象類 abstract 使用

kotlin 泛型使用
image.png

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

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

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

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

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

關(guān)鍵字 reified 使用
image.png

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

image.png

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

image.png

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

kotlin 協(xié)程
image.png

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

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

image.png

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

image.png

kotlin 的 方法重命名
image.png

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

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

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

注解使用
image.png

image.png

image.png

image.png

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

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容