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

相关推荐
符哥20083 小时前
一篇讲透掌握 Kotlin 协程
android·kotlin
芒鸽3 小时前
鸿蒙应用自动化资源同步:Kuikly框架资源复制解决方案
华为·kotlin·自动化·harmonyos·kuikly
zfoo-framework1 天前
kotlin
android·开发语言·kotlin
冬奇Lab2 天前
【Kotlin系列14】编译器插件与注解处理器开发:在编译期操控Kotlin
android·开发语言·kotlin·状态模式
冬奇Lab3 天前
【Kotlin系列13】DSL设计:构建类型安全的领域语言
开发语言·安全·kotlin
MengFly_3 天前
Compose中rememberUpdatedState的作用
android·kotlin·compose
冬奇Lab4 天前
【Kotlin系列12】函数式编程在Kotlin中的实践:从Lambda到函数组合的优雅之旅
android·开发语言·kotlin
糖猫猫cc5 天前
Kite:Kotlin/Java 通用的全自动 ORM 框架
java·kotlin·springboot·orm
冬奇Lab5 天前
【Kotlin系列11】协程原理与实战(下):Flow与Channel驯服异步数据流
android·开发语言·kotlin