kotlin中多个函数作为形参的使用

14 阅读1分钟
object Test {
    @JvmStatic
    fun main(args: Array<String>) {
        println("Hello World")
        val d = D()
        test(1, 2, d::lala, ::test2)
        test(10, 20, ::test1, ::test2)

        test(111) {
            test1(it)
        }
        test(222, d::lala)
    }

    private fun test1(a: Int) {
        println("test1 $a")
    }

    private fun test2(a: Int, b: Int) {
        println("test2 $a $b")
    }

    private fun test(a: Int, b: Int, fun1: (Int) -> Unit, fun2: (Int, Int) -> Unit) {
        println("test $a $b")
        fun1(a)
        fun2(a, b)
    }

    private fun test(a: Int, fun1: (Int) -> Unit) {
        println("test $a")
        fun1(a)
    }

    class D {
        fun lala(l: Int) {
            println("lala $l")
        }
    }
}

还可参考: Kotlin之高阶函数的用法(将函数作为参数传递)_kotlin 函数作为参数-CSDN博客