kotlin: 函数类型作为函数返回值

一,例子

代码:

        //处理按钮点击事件
        binding.button1.setOnClickListener {

            // 函数的返回值 是函数类型
            fun returnFun(): (String)->String {
                return { name: String ->
                    "Hello $name"
                }
            }
            // 接收函数类型的返回值
            var fun0 = returnFun();     //返回的fun0是一个函数

            // 执行 返回的 函数
            var str = fun0("Tom")
            println("fun0(\"Tom\")的结果:"+str)

            //返回为函数类型
            fun getMultiplier(factor: Int): (Int) -> Int {
                return { num -> num * factor }
            }
            //调用
            val triple = getMultiplier(3)   //返回的triple是一个函数
            println("triple(4)的结果:"+triple(4)) // 输出 12
            println("getMultiplier(3).invoke(4)的结果:"+getMultiplier(3).invoke(4)) // 输出 12
        }

运行结果:

image

二,例子

代码:

        //处理按钮点击事件
        binding.button2.setOnClickListener {
            //Lambda 作为函数返回值
            fun getOperator(): (Int, Int) -> Int {
                return { x, y -> x + y }
            }
            //add这个变量的类型:  (Int, Int) -> Int
            val add = getOperator()
            println("add(10, 5) 的结果:"+add(10, 5)) // 输出 15

            println("getOperator().invoke(10,5) 的结果:"+getOperator().invoke(10,5))
        }

运行结果:

image

三,例子

代码:

        //处理按钮点击事件
        binding.button3.setOnClickListener {
            //函数类型 作为operate函数的参数
            fun operate(a: Int, b: Int, op: (Int, Int) -> Int): Int {
                return op(a, b)
            }
            val multi = fun(x: Int, y: Int) = x * y
            val result1 = operate(3, 4, multi)
            println("operate(3, 4, multi) 的结果:"+result1) // 输出 12

            val result2 = multi(5,6)
            println("multi(5,6) 的结果:"+result2) // 输出 30

            //定义返回值为表达式
            val multi2 = fun(x: Int, y: Int) = {x * y}
            val result3 = multi2(5,6).invoke()
            println("multi2(5,6).invoke() 的结果:"+result3) // 输出 30
        }

运行结果:

image

 

posted @ 2025-08-23 09:20  刘宏缔的架构森林  阅读(10)  评论(0)    收藏  举报