成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kotlin里兩個偷懶神器:lateinit和by lazy簡單易懂解釋

開發(fā) 開發(fā)工具
??Kotlin??早就看穿了這一切,于是掏出了兩把金鑰匙:lateinit和by lazy。這哥倆一個像會賒賬的便利店老板,一個像精打細(xì)算的存錢罐,專治各種初始化不服。接下來就帶你看透它們的套路,保準(zhǔn)你學(xué)完直拍大腿:"早該用這招了!"

有沒有經(jīng)歷過這樣的絕望時(shí)刻???

? 寫代碼時(shí)對象像約會遲到,總在需要它的時(shí)候不見蹤影

? 想先聲明變量后面再賦值,卻被編譯器瘋狂報(bào)錯追殺

? 每次初始化都要寫一堆判空邏輯,代碼腫得像泡發(fā)的饅頭

Kotlin早就看穿了這一切,于是掏出了兩把金鑰匙:lateinitby lazy。這哥倆一個像會賒賬的便利店老板,一個像精打細(xì)算的存錢罐,專治各種初始化不服。接下來就帶你看透它們的套路,保準(zhǔn)你學(xué)完直拍大腿:"早該用這招了!"

lateinit(先欠著型)

這玩意兒咋用?

// 聲明個按鈕但先不裝(就像網(wǎng)購下單但沒付款)
lateinit var 我的按鈕: Button

// 等頁面加載好了再裝按鈕(確認(rèn)收貨)
override fun onCreate(...) {
   我的按鈕 = findViewById(R.id.按鈕)
}

必看說明書

只能欠對象:比如String、View這些大件,不能欠Int這種小東西(系統(tǒng)不讓你欠5塊錢)

必須還債:用之前不初始化?直接閃退報(bào)錯!就像吃飯不給錢會被老板抓住

查崗功能:可以用::我的按鈕.isInitialized看看有沒有裝好按鈕

什么時(shí)候用?

? Android里綁定控件(頁面沒加載完時(shí)按鈕確實(shí)不存在)

? 測試的時(shí)候臨時(shí)造數(shù)據(jù)

? 重點(diǎn):你100%確定后面會填坑的情況!

by lazy(拖延癥型)

典型用法

// 配置信息(等到有人要看了才去查檔案)
val 用戶配置 by lazy {
   println("正在翻檔案柜...")
   loadConfig() // 假裝這里要查數(shù)據(jù)庫
}

// 第一次訪問時(shí)才干活
println(用戶配置) // 這里才會執(zhí)行上面的代碼
println(用戶配置) // 直接拿上次的結(jié)果

核心賣點(diǎn)

自動拖延:不叫你就不動(省電模式)

只干一次活:第一次干活后就把結(jié)果存起來(老油條行為)

啥都能拖:基本類型、對象、可空類型通吃

安全模式:默認(rèn)不怕多線程搶著用(當(dāng)然也能調(diào)成單身狗模式)

適用場景

? 加載大文件(比如游戲資源)

? 網(wǎng)絡(luò)請求配置

? 需要復(fù)雜計(jì)算的數(shù)據(jù)

? 所有能拖到最后一刻干的事

對照表(飯圈版)


lateinit

by lazy

性格

急性子(必須手動給)

懶癌晚期(自動拖延)

戶口

必須是var(能改嫁)

必須是val(從一而終)

安全

容易翻車(忘初始化就完蛋)

自帶安全氣囊(默認(rèn)線程安全)

特長

適合動態(tài)變化的東西

適合一成不變的老古董

選擇困難癥急救包

選lateinit:

? 東西需要變來變?nèi)ィū热鐒討B(tài)更換按鈕)

? 你能控制什么時(shí)候填坑(比如在onCreate里)

? 不能用val的情況(比如要重新綁定控件)

選by lazy:

? 東西生下來就定型(比如APP配置)

? 初始化很費(fèi)勁(比如要讀大文件)

? 想自動防呆(防止重復(fù)初始化)

防呆小貼士

lateinit翻車現(xiàn)場:

lateinit var 還沒準(zhǔn)備好的數(shù)據(jù): String  
fun 作死() { println(還沒準(zhǔn)備好的數(shù)據(jù)) } // 閃退!

by lazy保命技巧:

val 保命數(shù)據(jù) by lazy(LazyThreadSafetyMode.NONE) {  
   // 單身狗模式(效率更高但只能單線程用)  
}

終極總結(jié)

lateinit = 先畫個餅,記得后面烙熟!(適合會變的東西)

by lazy = 打死不早做準(zhǔn)備,但保證隨叫隨到!(適合不變的東西)

記住這兩招,Kotlin寫代碼能省一半力氣!用的時(shí)候悠著點(diǎn),別把餅畫太大最后烙不熟就行~

責(zé)任編輯:武曉燕 來源: 沐雨花飛碟
相關(guān)推薦

2010-05-28 09:57:50

TortoiseSVN

2021-04-12 08:00:00

云存儲數(shù)據(jù)數(shù)據(jù)中心

2009-08-12 16:37:22

C#變量類型轉(zhuǎn)換

2020-04-16 09:54:39

JavaScript前端技術(shù)

2020-05-13 16:54:05

JavaScript開發(fā)代碼

2013-08-08 09:50:30

2013-12-16 09:32:21

未來網(wǎng)絡(luò)ICNSDN

2022-06-17 09:46:51

Chrome 102Chrome瀏覽器

2011-04-19 16:06:57

typedef

2020-11-13 07:16:09

線程互斥鎖死循環(huán)

2023-05-12 15:42:32

AWSSnapChangeCedar

2012-05-04 11:12:24

云計(jì)算

2020-04-09 10:25:18

Java 開發(fā)者神器

2020-09-28 18:19:15

awkLinux

2022-05-31 09:01:13

GitHub工具安全

2010-09-10 15:26:05

SOAP封裝

2009-07-16 10:39:00

SwingUtilit

2022-05-06 09:22:25

Go泛型

2022-07-13 15:46:57

Python數(shù)據(jù)可視化代碼片段

2013-04-25 09:55:21

進(jìn)程線程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲www | 久久精品亚洲精品国产欧美 | 国产成人精品999在线观看 | 日韩欧美久久 | 亚洲国产精品一区二区三区 | 午夜影院网站 | av喷水| av色站| 日本a v在线播放 | 欧美一级高潮片免费的 | 久草网站| 国产成在线观看免费视频 | 欧美一区二区在线播放 | 亚洲欧美中文日韩在线v日本 | 久久精品二区 | 久久综合色综合 | 97精品国产一区二区三区 | 亚洲精品久久久久中文字幕二区 | 国产精品久久久久久久免费观看 | 国产精品.xx视频.xxtv | 福利网址| www.99热.com | 精品国产精品 | 日本一区视频在线观看 | 午夜天堂精品久久久久 | 高清黄色毛片 | 中文成人在线 | 亚洲成人午夜电影 | 蜜桃av鲁一鲁一鲁一鲁 | 99视频在线免费观看 | 久久精品国产亚洲夜色av网站 | 无吗视频 | 亚洲国产精品一区在线观看 | 久久精品国产久精国产 | 欧美黄在线观看 | 青青草av在线播放 | 一起操网站 | 91久久久久 | 亚洲一区二区国产 | 亚洲午夜精品视频 | 中文字幕高清av |