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

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

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

有沒有經歷過這樣的絕望時刻???

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

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

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

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

lateinit(先欠著型)

這玩意兒咋用?

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

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

必看說明書

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

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

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

什么時候用?

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

? 測試的時候臨時造數據

? 重點:你100%確定后面會填坑的情況!

by lazy(拖延癥型)

典型用法

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

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

核心賣點

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

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

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

安全模式:默認不怕多線程搶著用(當然也能調成單身狗模式)

適用場景

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

? 網絡請求配置

? 需要復雜計算的數據

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

對照表(飯圈版)


lateinit

by lazy

性格

急性子(必須手動給)

懶癌晚期(自動拖延)

戶口

必須是var(能改嫁)

必須是val(從一而終)

安全

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

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

特長

適合動態變化的東西

適合一成不變的老古董

選擇困難癥急救包

選lateinit:

? 東西需要變來變去(比如動態更換按鈕)

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

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

選by lazy:

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

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

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

防呆小貼士

lateinit翻車現場:

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

by lazy保命技巧:

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

終極總結

lateinit = 先畫個餅,記得后面烙熟?。ㄟm合會變的東西)

by lazy = 打死不早做準備,但保證隨叫隨到?。ㄟm合不變的東西)

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

責任編輯:武曉燕 來源: 沐雨花飛碟
相關推薦

2010-05-28 09:57:50

TortoiseSVN

2021-04-12 08:00:00

云存儲數據數據中心

2009-08-12 16:37:22

C#變量類型轉換

2020-04-16 09:54:39

JavaScript前端技術

2020-05-13 16:54:05

JavaScript開發代碼

2013-08-08 09:50:30

2022-06-17 09:46:51

Chrome 102Chrome瀏覽器

2013-12-16 09:32:21

未來網絡ICNSDN

2011-04-19 16:06:57

typedef

2020-11-13 07:16:09

線程互斥鎖死循環

2020-09-28 18:19:15

awkLinux

2022-05-31 09:01:13

GitHub工具安全

2023-05-12 15:42:32

AWSSnapChangeCedar

2012-05-04 11:12:24

云計算

2020-04-09 10:25:18

Java 開發者神器

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數據可視化代碼片段

2017-01-19 10:34:15

SDNNFV速度
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色久影院 | 欧美国产一区二区三区 | 最新黄色毛片 | 久久免费精品 | 欧美日韩午夜精品 | 中文精品视频 | 亚洲视频三区 | 亚洲日韩中文字幕一区 | 精品在线观看一区二区 | 婷婷色网 | 91久久久久久久久久久久久 | 亚洲最大的成人网 | 欧美日韩在线观看视频 | 午夜视频一区二区三区 | 国产精品久久久久久久久久免费看 | 国产精品综合色区在线观看 | 日韩在线大片 | 亚洲日本视频 | 综合久久久 | 欧美精品一区二区三区视频 | 国产精品国产成人国产三级 | 东京久久 | 久久免费观看一级毛片 | 久久99久久99精品免视看婷婷 | 亚洲精品国产成人 | 日本在线一区二区三区 | 99九九久久| 久久国产成人精品国产成人亚洲 | 亚洲一区久久 | 国产精品不卡一区二区三区 | 乱一性一乱一交一视频a∨ 色爱av | 亚洲欧美成人在线 | 自拍偷拍小视频 | 国产精品欧美一区二区三区不卡 | 欧美一级二级三级 | 久久精品国产一区二区三区不卡 | 国产欧美精品 | 91亚洲国产亚洲国产 | 亚洲视频在线观看 | 国产精品久久久久久久久久久久 | 色888www视频在线观看 |