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

相关推荐
赏金术士8 小时前
Compose 教学项目
android·kotlin·compose
赏金术士17 小时前
Jetpack Compose 状态提升(State Hoisting)完全指南
android·kotlin·compose
Hali_Botebie19 小时前
岭回归(Ridge Regression),也称为L2正则化回归
数据挖掘·回归·kotlin
萌新杰少21 小时前
安卓原生项目迁移KMP——核心迁移
android·kotlin·jetbrains
Kapaseker1 天前
Kotlin 的 SAM 到底解决了什么?
kotlin
plainGeekDev2 天前
Android 开发者再不转Kotlin,真的来不及了
android·kotlin
赏金术士2 天前
第五章:数据层—网络请求与Repository
android·kotlin·compose
plainGeekDev2 天前
Android 专家岗 Kotlin 面试题:能答出这些,说明你对语言设计有自己的理解
android·kotlin
plainGeekDev2 天前
Android 资深岗 Kotlin 面试题:只会用协程不够,你得懂它为什么这么设计
android·kotlin
陈皮糖_2 天前
Kotlin 设计哲学:写给Java开发者的思维转变指南
kotlin