Jetpack Compose 教學上課講義【從零開始學 Jetpack Compose 程式設計】Kotlin 語法補充篇 - Lambda 匿名函數

 

【從零開始學 Jetpack Compose 程式設計】

線上教學課程目錄: https://bit.ly/3JF4SFA
Youtube 課程播放清單:https://bit.ly/3tFjRbx
Udemy 線上課程:https://bit.ly/3MbVnhO


lambda 匿名函數

//一個基本函數樣式長這樣
fun sum(x: Int, y: Int): Int {
    return x + y
}

//為了方便理解,拿掉參數
fun sum(): Unit {
   
}

//匿名:沒有名字,去掉名字,但這樣寫會噴錯
fun ()-> Unit {
   
}
//改成這樣
val x: () -> Unit ={}
//一般定義資料類型
val y:Int

// 匿名:沒有名字,去掉名字
// -> 回傳什麼資料型態
// () -> Unit

Trailing lambda

是最後一個參數才能這樣用,可以參考 MyApplicationTheme、Surface。

Higher-order functions and lambda expressions
https://developer.android.com/jetpack/compose/kotlin
Trailing lambda
https://developer.android.com/jetpack/compose/kotlin#trailing-lambdas

MyApplicationTheme {
        Greeting("Android")
    }

沒有參數

//一個基本函數樣式長這樣
//函數當參數傳遞
fun sum(x: () -> Unit): Unit {
    x()
    //官方源碼會多用 invoke
    x.invoke()
}


fun main() {
    //sum 改成匿名函數
    val x: () -> Unit ={ println("HKT線上教室")}
    sum(x)

    //沒有任何參數,可以改成這樣
    sum(x = { println("HKT線上教室") })

    //再簡化,去掉 x
    sum({ println("HKT線上教室") })
    
    //Compose 中例如: MyApplicationTheme、Surface
    sum { println("HKT線上教室") }
}

單個參數

//一個基本函數樣式長這樣
fun sum0(x: String) {
    println(x)
}

fun main() {
   sum0("HKT線上教室")

   //lambda 寫法
   val sum1: (String) -> Unit = { x -> println(x)}
   sum1("HKT線上教室")

   //只有一個參數,可以使用 it 代替
   val sum2: (String) -> Unit = { it -> println(it)}
   sum2("HKT線上教室")
    
}

多個參數

//一個基本函數樣式長這樣
fun sum0(x: Int, y: Int): Int {
    return x + y
}


fun main() {
    //sum0 改成匿名函數的寫法,大括號的參數透過類型推斷
    val sum1: (Int, Int) -> Int = { x, y -> x + y }
    //sum1 再簡化,大括號的參數,需要定義參數類型
    val sum2 = { x: Int, y: Int -> x + y }

    println(sum2(1, 1))
}

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

nano 文字編輯器

16天記下7000單字

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

Android Studio 歷代版本下載點