Kotlin高阶函数及函数作为参数传递

Kotlin高阶函数及函数作为参数传递

Kotlin 复制代码
import kotlin.random.Random

fun main() {
    var n = 2025
    var s = "zhang"
    myTask(n, s, ::onStart)

    n = 2026
    s = "phil"
    myTask(n, s, ::onStop)
}

private fun myTask(n: Int, s: String, func: (n: Int, s: String, result: Boolean?) -> Unit) {
    apiTask(n, s, object : ApiCallback {
        override fun apiExec(n: Int, s: String, result: Boolean) {
            func.invoke(n, s, result)
        }
    })
}

private fun onStart(n: Int, s: String, result: Boolean? = false) {
    println("onStart $n $s $result")
}

private fun onStop(n: Int, s: String, result: Boolean? = false) {
    println("onStop $n $s")
}

fun apiTask(n: Int, s: String, callback: ApiCallback) {
    println("task $n $s")
    callback.apiExec(n, s, Random.nextBoolean())
}

interface ApiCallback {
    fun apiExec(n: Int, s: String, result: Boolean) {}
}

运行输出:

task 2025 zhang

onStart 2025 zhang false

task 2026 phil

onStop 2026 phil

相关:

https://blog.csdn.net/zhangphil/article/details/147854834

https://blog.csdn.net/zhangphil/article/details/129222810

相关推荐
Easyhood16 小时前
Android 开发入门实践(十四):Compose 副作用入门与四个常用 API
android·开发语言·kotlin·android jetpack·compose
松仔log1 天前
Kotlin中级——callbackFlow
java·前端·kotlin
zh_xuan1 天前
kotlin常见面试题
开发语言·kotlin·面试题
mmsx1 天前
耳切法切带洞多边形:论文能跑通,真实数据为什么崩
android·kotlin
Kapaseker1 天前
Kotlin 又要加语法糖了:这次轮到 if-else
android·kotlin
雨白2 天前
从原理到实践:使用 Kotlin KSP 仿写 ButterKnifeLite
android·kotlin
灿飞2 天前
Kotlin与Java虚拟机十一:类与属性:构造顺序、backing field 与显式 backing field
java·后端·kotlin
传奇开心果2 天前
【探秘 Jetpack Compose 框架深水区】 第8课:rememberSaveable 的边界在哪里?——Bundle、Saver 与什么值得跨进程存活
android·kotlin
Kapaseker2 天前
领导问我 Kotlin 的 Nothing 是什么?
android·kotlin