【Kotlin 入門指南】延遲屬性 (Lazy properties)

閱讀時間約 2 分鐘
【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q

延遲屬性

延遲屬性是指當你在對象內聲明一個屬性時,不會立即為其分配記憶體或初始化值。相反,該屬性的初始化會被推遲到首次使用它的時候。這個特性特別有助於減少不必要的初始化和資源的浪費,因為它僅在需要時才執行初始化過程。

延遲屬性範例

在這個範例中,我們建立了一個延遲屬性 lazyValue,當你第一次訪問它時,lambda 表達式會執行並初始化這個屬性的值。之後,這個值會被存儲,並在後續的訪問中被重複使用。

val lazyValue: String by lazy {
println("computed!") //第一次呼叫,會執行,之後呼叫不會
"Hello"
}

fun main() {
println(lazyValue) //第一次呼叫
println(lazyValue) //第二次呼叫
}

Android 相關應用

在 Android 開發中,善用延遲屬性技巧能夠提升程式效率與品質。

//View Binding
private val binding by lazy {
ActivityMainBinding.inflate(layoutInflater)
}

//intent 頁面互相傳遞資料 getStringExtra
//private var name: String? = null //指定 null 不安全
private val name: String by lazy {
intent.getStringExtra("name")
}

//MutableLiveData
val currentResult: MutableLiveData<String> by lazy {
MutableLiveData<String>()
}

延遲屬性的適用情境

延遲屬性特別適用於需要耗費較多資源或時間的初始化過程,例如資料庫連接、複雜計算或網路請求。通過延遲初始化這些屬性,你可以在需要時再執行初始化,從而提高應用程式的性能和效率。

8會員
220內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...