【Kotlin 入門指南】kotlin 區域函數 (Scope functions) - run

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

run

run 函數在 Kotlin 程式語言中具有讓人驚豔的多功能性,可以被視為 let 函數和 with 函數的完美結合。為什麼這麼說呢?因為 run 函數不僅能夠像 let 函數一樣優雅地處理物件是否為 null 的情況,同時也像 with 函數一樣提供了對同一個對象進行多次屬性設定的便捷方式。這種集合了兩者優點的特性,使得 run 函數在 Kotlin 中成為一個相當強大且實用的工具。

run 區域函數基本用法

run 區域函數,讓你在特定的作用域內直接呼叫該物件的成員函數或屬性,而無需重複使用該物件名稱。在這次範例中,我們使用 run 函數直接呼叫 dataIsLong 函數,判斷字串長度是否超過五個字元,這樣做不僅簡化了程式碼,也增加了可讀性。

fun dataIsLong(data: String) = data.length > 5

fun main() {
//使用前
dataIsLong("1") //false
dataIsLong("123456789") //true

//使用後
"1".run(::dataIsLong) //false
"123456789".run(::dataIsLong) //true
}

run 區域函數,連續呼叫使用範例

在這個範例中,我們連續使用 run 函數,將字串長度檢查的結果直接傳遞給 getResult 函數並印出結果。這種風格不僅提高了程式碼的簡潔度,還使得程式邏輯更易於理解。

fun dataIsLong(data: String) = data.length > 5

fun getResult(isTooLong: Boolean): String {
return if (isTooLong) {
"資料錯誤"
} else {
"資料正確"
}
}

fun main() {
// 傳統連續呼叫方式
println(getResult(dataIsLong("123456")))


//使用 run ,連續呼叫範例
"123456"
.run(::dataIsLong)
.run(::getResult)
.run(::println)
}

run 區域函數功能表

run 區域函數功能表

run 區域函數功能表

run 區域函數,在 Android 應用實戰範例

run 函數在 Android 應用中有極佳的適用性。舉例來說,假設我們有一個 TextView 物件,以往設置其屬性時常常需要使用 ?. 來避免空指針錯誤,透過run 函數,這樣的寫法不僅更為清晰,也減少了重複調用 textView 物件的情況,使得程式碼更加簡潔易讀。

val textView : TextView = findViewById(R.id.textView)

//未使用 run 區域函數,每次使用都要「?.」判斷是否為 null
textView?.text = "HKT線上教室"
textView?.setTextColor(Color.parseColor("#ffd700"))
textView?.textSize = 66f

//使用 run 區域函數
textView.run {
text = "HKT線上教室"
setTextColor(Color.parseColor("#ffd700"))
textSize = 66f
}
avatar-img
13會員
258內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
HKT實驗室 的其他內容
當我們需要對特定物件進行多個操作時,傳統的做法是每次都要重複寫下該物件的名稱,這不僅冗長,還可能降低程式碼的可讀性。而 with 函數則能夠解決這個問題,它的作用是將指定物件傳遞給 lambda 函數,在該函數內可以直接訪問該物件的屬性和方法。
在 Kotlin 程式語言中,當你使用 apply 函數時,你可以將其視為對該物件進行屬性設定的操作。 apply 函數讓你能夠直接在物件上執行多個設定操作,並返回該物件本身,讓程式碼更為簡潔而具有可讀性。這個函數特別適合在建立物件後立即對其屬性進行初始化或設定的情境下使用。
在 Kotlin 裡,also 函式能夠在物件上執行一連串操作,同時回傳該物件本身。儘管 also 與 let 函式有相似之處,但兩者仍有些許差異。主要區別在於它們的回傳值:also 函式會回傳物件本身,而 let 函式則回傳 Lambda 運算後的結果。這個差別影響了它們在程式碼中的適用情境。
Kotlin 標準函式庫中有五個函數,它們的目的是在一個物件的範圍內執行一段程式碼。這些函數分別是 let, run, with, apply, 和 also。它們的差別在於物件在程式碼中的可用方式和整個表達式的回傳值。
takeIf 與 takeUnless 函數在 Kotlin 程式語言中,提供了一種更具彈性和簡潔的方式來處理條件性邏輯。它們讓程式碼更易讀、更容易維護,同時減少了不必要的重複代碼。藉由善用這兩個函數,你能夠提升自己的程式撰寫效率,寫出更具可讀性且高效的 Kotlin 程式碼。
當需要使用某個父類別的功能,但不想自行實作時,Kotlin 程式語言中,提供了一種原生的語法支持,讓我們可以很容易地使用委托類別。我們只需要在類別的宣告中使用 by 關鍵字,就可以指定一個委托對象,然後編譯器會自動幫我們生成所有需要委托的方法和屬性。
當我們需要對特定物件進行多個操作時,傳統的做法是每次都要重複寫下該物件的名稱,這不僅冗長,還可能降低程式碼的可讀性。而 with 函數則能夠解決這個問題,它的作用是將指定物件傳遞給 lambda 函數,在該函數內可以直接訪問該物件的屬性和方法。
在 Kotlin 程式語言中,當你使用 apply 函數時,你可以將其視為對該物件進行屬性設定的操作。 apply 函數讓你能夠直接在物件上執行多個設定操作,並返回該物件本身,讓程式碼更為簡潔而具有可讀性。這個函數特別適合在建立物件後立即對其屬性進行初始化或設定的情境下使用。
在 Kotlin 裡,also 函式能夠在物件上執行一連串操作,同時回傳該物件本身。儘管 also 與 let 函式有相似之處,但兩者仍有些許差異。主要區別在於它們的回傳值:also 函式會回傳物件本身,而 let 函式則回傳 Lambda 運算後的結果。這個差別影響了它們在程式碼中的適用情境。
Kotlin 標準函式庫中有五個函數,它們的目的是在一個物件的範圍內執行一段程式碼。這些函數分別是 let, run, with, apply, 和 also。它們的差別在於物件在程式碼中的可用方式和整個表達式的回傳值。
takeIf 與 takeUnless 函數在 Kotlin 程式語言中,提供了一種更具彈性和簡潔的方式來處理條件性邏輯。它們讓程式碼更易讀、更容易維護,同時減少了不必要的重複代碼。藉由善用這兩個函數,你能夠提升自己的程式撰寫效率,寫出更具可讀性且高效的 Kotlin 程式碼。
當需要使用某個父類別的功能,但不想自行實作時,Kotlin 程式語言中,提供了一種原生的語法支持,讓我們可以很容易地使用委托類別。我們只需要在類別的宣告中使用 by 關鍵字,就可以指定一個委托對象,然後編譯器會自動幫我們生成所有需要委托的方法和屬性。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
本章節旨在教導讀者如何在 Kotlin 中引入套件。將會涵蓋如何引用第三方套件,如何引用自定義模組,以及如何創建和引用自定義套件。此外,還會列出一些常用的套件,以供讀者參考。
Thumbnail
本章節的目的是介紹 Kotlin 中的物件導向概念。這包括了類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型以及反射等概念。每一個概念都會透過範例程式碼來解釋其功能和用法。
Thumbnail
這章節的目的是介紹 Kotlin 語言中函數的基本用法和概念,包括函數的聲明、使用、參數和返回值等。通過學習這章節,讀者可以熟練掌握如何在 Kotlin 中定義和使用函數,來解決各種問題。
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
此文件的目的是教授 Kotlin 程式語言的運算符,包括算數運算子、比較運算子、賦值運算子、位元運算子以及運算子的優先等級。這將有助於讀者更好地理解和撰寫 Kotlin 程式碼。
Thumbnail
本章節的目的是介紹 Kotlin 的各種資料型別。包括內建型別如基本數值型別、字串型別和布林型別等,以及如何進行型別轉換。此外,也介紹了如何定義自訂型別(類)和元組型別,以及 Kotlin 提供的集合型別,例如列表(List)、集合(Set)和映射(Map)以及陣列(Array)。
Thumbnail
本文總結和介紹了Kotlin的基本語法、註解和變數的使用,透過實例進行講解,以幫助讀者更好地理解和快速上手Kotlin語言。
Thumbnail
這個章節的目的是為了介紹Kotlin這種程式語言,包含它的特性、應用領域、使用者,以及相關的學習資源和工具。透過這篇文章,讀者可以了解到Kotlin的基礎知識,並開始學習和使用它。
Thumbnail
此章節旨在解釋Swift語言中函數的基本結構和操作方式,包括函數的聲明、呼叫、參數和返回值。閱讀這個章節可以幫助你理解並掌握如何在Swift編程中有效地使用和管理函數。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
本章節旨在教導讀者如何在 Kotlin 中引入套件。將會涵蓋如何引用第三方套件,如何引用自定義模組,以及如何創建和引用自定義套件。此外,還會列出一些常用的套件,以供讀者參考。
Thumbnail
本章節的目的是介紹 Kotlin 中的物件導向概念。這包括了類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型以及反射等概念。每一個概念都會透過範例程式碼來解釋其功能和用法。
Thumbnail
這章節的目的是介紹 Kotlin 語言中函數的基本用法和概念,包括函數的聲明、使用、參數和返回值等。通過學習這章節,讀者可以熟練掌握如何在 Kotlin 中定義和使用函數,來解決各種問題。
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
此文件的目的是教授 Kotlin 程式語言的運算符,包括算數運算子、比較運算子、賦值運算子、位元運算子以及運算子的優先等級。這將有助於讀者更好地理解和撰寫 Kotlin 程式碼。
Thumbnail
本章節的目的是介紹 Kotlin 的各種資料型別。包括內建型別如基本數值型別、字串型別和布林型別等,以及如何進行型別轉換。此外,也介紹了如何定義自訂型別(類)和元組型別,以及 Kotlin 提供的集合型別,例如列表(List)、集合(Set)和映射(Map)以及陣列(Array)。
Thumbnail
本文總結和介紹了Kotlin的基本語法、註解和變數的使用,透過實例進行講解,以幫助讀者更好地理解和快速上手Kotlin語言。
Thumbnail
這個章節的目的是為了介紹Kotlin這種程式語言,包含它的特性、應用領域、使用者,以及相關的學習資源和工具。透過這篇文章,讀者可以了解到Kotlin的基礎知識,並開始學習和使用它。
Thumbnail
此章節旨在解釋Swift語言中函數的基本結構和操作方式,包括函數的聲明、呼叫、參數和返回值。閱讀這個章節可以幫助你理解並掌握如何在Swift編程中有效地使用和管理函數。