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关键字显式指定返回值