kotlin: lambda表达式作函数参数

一,例子

定义函数:

//定义函数,参数action是一个函数类型
fun doSomething(action: () -> String) {
    val act = action();
    println(act)
}

//定义函数,其中最后一个参数是函数类型
fun studentDoSomething(name: String, age: Int, action: (String, Int) -> String) {
    val act = action(name, age);
    println(act)
}

代码:

       //处理按钮点击事件
        binding.button1.setOnClickListener {
            // 定义函数类型变量, 之后作为函数参数传递给函数
            val actionFun = { name: String, age: Int ->
                "学生 $name ,现年 $age 岁, 是我校三年级学生"
            }

            // 调用 studentDoSomething 函数, 输入姓名, 年龄, 执行的操作
            studentDoSomething("Tom", 18, actionFun);

            //直接使用匿名函数作为函数参数
            // 调用 studentDoSomething 函数, 输入姓名, 年龄, 执行的操作
            studentDoSomething("老王", 19, { name: String, age: Int ->
                "学生 $name ,现年 $age 岁, 是我校三年级学生"
            })

            //匿名函数 , 也就是 Lambda 表达式 作为最后一个参数 , 可以提取到括号外面
            // 调用 studentDoSomething 函数, 输入姓名, 年龄, 执行的操作
            studentDoSomething("王富贵", 20) { name: String, age: Int ->
                "学生 $name ,现年 $age 岁, 是我校三年级学生"
            }

        }

运行结果:

image

二,例子

代码:

        //处理按钮点击事件
        binding.button2.setOnClickListener {
            // 调用 doSomething 函数, 传入 Lambda 表达式 / 匿名函数
            doSomething({
                "Hello World 1"
            })

            //如果 Lambda 表达式 作为 函数参数 , 并且 该参数是 唯一参数 ,
            // 那么 Lambda 表达式外面的圆括号可以省略
            doSomething {
                "Hello World 2"
            }
        }

运行结果:

image

 

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