kotlin: lambda表达式和匿名函数的区别

一,代码:

//比较lambda和匿名函数的区别
fun diffLambAnoni() {
    //区别1:匿名函数通过fun关键字定义的
    // lambda不用fun定义
    //区别2:返回 Lambda表达式中,返回值是最后一个表达式的结果
    //匿名函数中,必须使用 return关键字显式指定返回值
    val lambdaSum1 = { x: Int, y: Int -> x + y }  // Lambda表达式
    val lambdaSum2 = { x: Int, y: Int ->
        println("x:"+x+";y:"+y)
        x + y
    }  // Lambda表达式
    val anonSum = fun(x: Int, y: Int): Int { return x + y }  // 匿名函数

    println("lambda1:"+lambdaSum1(11,55))
    println("lambda2:"+lambdaSum2(11,55))
    println("anon:"+anonSum(11,55))

    //演示两者的区别
    val numbers = listOf(1, 2, 3, 4, 5)

    val lam1 = {  it:Int->
        it * 2
    }

    val doubled1 = numbers.map { it * 2 }
    println("double1:"+doubled1)  // 输出: [2, 4, 6, 8, 10]
    val doubled2 = numbers.map(lam1)
    println("double2:"+doubled2)  // 输出: [2, 4, 6, 8, 10]

    val anon1 = fun(x: Int): Int {
        return x * 2
    }
    val doubled3 = numbers.map(fun(x: Int): Int {
        return x * 2
    })
    println("double3:"+doubled3)  // 输出: [2, 4, 6, 8, 10]
    val doubled4 = numbers.map(anon1)
    println("double4:"+doubled4)  // 输出: [2, 4, 6, 8, 10]
}

    区别1:匿名函数通过fun关键字定义的, lambda不用fun定义
    区别2:返回 Lambda表达式中,返回值是最后一个表达式的结果
    匿名函数中,必须使用 return关键字显式指定返回值

二,运行结果:

image

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