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
相关: