Jetpack Compose 教學上課講義【從零開始學 Jetpack Compose 程式設計】Kotlin 語法補充篇 - Lambda 匿名函數
【從零開始學 Jetpack Compose 程式設計】
線上教學課程目錄: https://bit.ly/3JF4SFA
Youtube 課程播放清單:https://bit.ly/3tFjRbx
Udemy 線上課程:https://bit.ly/3MbVnhO
【從零開始學 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))
}