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

相关推荐
idealzouhu29 分钟前
【Kotlin】 数据流完全指南:冷流、热流与 Android 实战
android·开发语言·kotlin
常利兵37 分钟前
Android 字体字重设置:从XML到Kotlin的奇妙之旅
android·xml·kotlin
idealzouhu1 小时前
【Kotlin】快速理解协程
kotlin
hnlgzb1 小时前
Gemini:kotlin这几个类型有什么区别?类比java的文件,是怎样的?
java·开发语言·kotlin
hnlgzb1 小时前
kotlin安卓app中,当一个类继承ViewModel类的时候,这个类是想干什么?
android·开发语言·kotlin
新镜1 小时前
【Kotlin】StateFlow / MutableStateFlow只有值不相等时才会发射
kotlin
hnlgzb1 小时前
kotlin类 继承android.app.Activity 和androidx.activity.ComponentActivity 有什么区别?
android·kotlin·androidx
alexhilton11 小时前
Compose中的ContentScale:终极可视化指南
android·kotlin·android jetpack
jzlhll12312 小时前
kotlin Flow first() last()总结
开发语言·前端·kotlin
符哥200816 小时前
充电桩 WiFi 局域网配网(Android/Kotlin)流程、指令及实例说明文档
android·开发语言·kotlin