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

相关推荐
YB13752 天前
kotlin 关键字expect/actual的作用
kotlin
Android打工仔2 天前
不要再把 Flow 当作一个容器
android·kotlin
天空之城--2 天前
Android行业一周动态:编码趋势与行业资讯汇总
android·性能优化·架构·kotlin·android jetpack
JMchen3 天前
第 2 篇|Kotlin 进阶 —— 集合、循环与条件表达式
android·kotlin
YB13753 天前
Kotlin 三类关键字
kotlin
撩得Android一次心动3 天前
Jetpack Compose 知识点整理1【个人用】
android·学习·kotlin·android jetpack·compose
ForteScarlet3 天前
Kotlin 2.4.20 现已发布,新特性多不多?
android·java·开发语言·开源·kotlin·jetbrains
JMchen1233 天前
Cursor高阶玩法:.cursorrules编写与Spec-Driven开发实战,把AI调教成专属结对编程搭档
人工智能·vscode·kotlin·cursor·结对编程·spec-driven·.cursorrules
hai_android4 天前
Kotlin 协程作用域源码剖析
android·kotlin
leluckys4 天前
【KMP】-KMP 项目commonMain、androidMain、iosMain 到底放什么?
kotlin