Kotlin lamda语法备忘

1. 高阶函数

高阶函数可以将一个函数作为参数或返回值:

fun operate(x:Int=0,y:Int=0,body:(Int,Int)->Int){//body是一个函数类型,传入两个Int类型参数,返回一个Int类型参数
    print("this result is "+body(x,y))
}

高阶函数只是一个参数,就像其他普通参数一样,只规定了形式,真正的实际值由传入的函数或者lamda(lamda是真正的实际值)提供。

2. Lambda表达式

Lambda表达式通常使用“{ }”包围,参数是定义在“()”内,实体部分跟在“->”后面;
以上的operate()方法,我们还有一个更简洁的调用方式,即传入一个lambda表达式:

operate(3,7,{x,y->x+y})//函数参数传入一个lambda表达式

当函数参数是最后函数的最后一个参数,并且你传入一个lambda表达式作为相应的参数,则可以在圆括号之外指定它:

operate(3,7){//函数参数作为函数的最后一个参数,并且传入的是一个lambda表达式,可以在在圆括号外指定
        x,y->x+y

如果lambda表达式只有一个参数,kotlin可以自己计算出签名,它允许我们不声明唯一的参数,并且隐含的为我们声明其名称为it:

fun upCase(str:String,body:(String)->String):String{//body是一个函数参数,传入一个String类型参数,返回一个String类型
    return body(str)
}
fun transform(){
    upCase("HelloKotlin"){//函数字面值只有一个参数,可以省略参数声明,其名称是it
        it.toUpperCase()
    }
}

如果lambda表达式是调用的唯一参数,则调用中的圆括号可以完全省略。

3. 命名参数与提供默认值的参数
1. 当参数提供有默认值时,那么当调用时不给其对应参数时,则使用的就是默认参数值。

但是此时参数的顺序是严格规定的。

2. 如果只想改变其中一个默认值,又不想设置其前面的默认参数时,则可以使用命名参数来指定想改变的是哪个默认参数值。

https://www.jianshu.com/p/32424d267412


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值