kotlin: 函数体和参数的省略写法

一,代码:

        //处理按钮点击事件,创建一个假数据,保存到viewmodel
        binding.button1.setOnClickListener {

            //只有一个函数类型作为函数参数
            fun highOrderFunction(operation: (Int, Int) -> Int): Int {
                return operation(10, 20)
            }

            //当 Kotlin 只有一个 Lambda 作为函数参数时,() 可以被省略
            val result = highOrderFunction { a, b -> a + b }
            println("highOrderFunction { a, b -> a + b } 的结果:"+result) // 输出 30

            //Kotlin 允许在 只有一个参数 的 Lambda 表达式中,使用 it 作为默认参数名称,省略显式声明。
            val square1: (Int) -> Int = { it * it }   //省略参数
            val square2: (Int) -> Int = { x -> x * x }  //不省略参数

            val res1 = square1(5)
            val res2 = square2(5)
            println("square1(5) 的结果:"+res1) // 输出 25
            println("square2(5) 的结果:"+res2) // 输出 25

            //两个及以上参数时,必须显式声明
            // 两个参数,必须显式声明
            val add2: (Int, Int) -> Int = { a, b -> a + b }
            println("add2(3, 4)的结果:"+add2(3, 4)) // 输出 7

            //函数体的省略
            //当函数可以通过单个表达式完成时,可省略 {} 并用 = 直接返回结果,编译器会自动推导返回值类型
            // 等价于代码块函数体,但更简洁
            fun myAdd1(a: Int, b: Int) = a + b

            //当函数需要执行多行逻辑时使用,必须显式声明返回值(如果有返回值)
            // 完整函数体(包含 return)
            fun myAdd2(a: Int, b: Int): Int {
                val sum = a + b
                return sum
            }

            println("myAdd1(2, 7)的结果:"+myAdd1(2, 7)) // 输出 9
            println("myAdd2(2, 7)的结果:"+myAdd2(2, 7)) // 输出 9

        }

二,运行结果:

posted @ 2025-07-19 07:46  刘宏缔的架构森林  阅读(25)  评论(0)    收藏  举报