Kotlin之lambda表达式

本文深入解析Kotlin中Lambda表达式的使用方法及其与传统函数的区别。通过实例演示Lambda表达式如何作为参数传递,并展示了其在函数式编程中的灵活性。

一开始我有点懵逼,lambda表达式是匿名函数我可以理解,可是一会是()->Unit,一会是{a:Int,b:Int->a+b}是什么鬼,后来才理解了。
lambda函数其实是匿名函数另一种写法,比如求a和b的和

//一般函数写法
var sumTwo = fun(a1: Int, a2: Int) = a1 + a2
--------------------------------------------------------------
//lambda函数写法
//a和b是参数,类型分别是Int类型
//->后面则是具体函数体
var lamdSum = { a: Int, b: Int ->  a+ b }

//正式开始调用
lamdSum(2,3)

而由于kotlin的函数里面的参数是可以传入函数的,则()->Unit代表的是变量的类型,类似于Int,String等,比如我定义一个X,它的类型是函数

// = 前面试变量及变量的类型,后面是函数体
// (a1: Int) -> Unit 代表 X的类型是一个函数类型,返回值时Utit,传入的参数是Int类型
var X: (a1: Int) -> Unit = { a1: Int -> println(a1) }

上面可能不理解,这样,我定义一个函数,里面传的参数类型是函数

//这是一个求和函数,返回类型是Int类型
fun sumOne(a1: Int, a2: Int): Int {
    return a1 + a2
}
//这是一个求和函数,返回类型是String类型
fun sumTwo(a1: Int, a2: Int): String {
    a1 + a2
    return "计算完毕"
}

//这是一个打印的函数,传入的参数类型为函数,这个函数内传的参数为Int型,返回值为Int
fun lamdDemo(myAction: (x: Int) -> Int) {
    println(myAction)
}

//正式调用
fun main(array: Array<String>) {
//调用lamdDemo,但是里面的参数只能传sumOne(),因为sumOne返回值是Int型,lamdDemo需要传入的函数也是Int型
lamdDemo { sumOne(2, 3) }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值