Lambda表达式

使用Lambda定义一个sum函数

var sumFun = { arg1: Int, arg2: Int -> arg1 + arg2 }
var sumFun2 = { arg1: Int, arg2: Int ->
    println("可以写多行,最后一行是函数的返回")
    arg1 + arg2
}

作为参数传递的例子

fun main(args: Array<String>) {
    
    //迭代args
    for (i in args) {
        println(i)
    }
    //和上面的结果是等价,println(it)作为参数传递给forEach
    args.forEach { println(it) }
}

如何简写的?我们来看下过程


    args.forEach({ it -> println(it) })    //1入参是一个Lambda表达式
    args.forEach({ println(it) })          //2入参只有一个的话,可以省略。为it
    args.forEach(){ println(it) }          //3如果参数最后一个是Lambda表达式,大括号可以移到小括号外面
    args.forEach{ println(it) }            //4小括号里没有参数,可以省略掉
    args.forEach(::println)                //5终级版本Convert lambda to reference,println与所需要的lambda表达式类型一样,可直接引用该函数 .用::引用函数

 

如何在迭代过程中跳出迭代

  //给大括号取号取名ForEach@,用@ForEach跳出迭代
    args.forEach ForEach@{
        if(it=="q") return@ForEach
        println(it)
    }

函数是是匿名函数

写法:{[参数列表]->[函数体,最后一行是返回值]}

比如: (Int,Int)->Int

通过打印看到类型 

println(someFun)

结果为:(kotlin.Int, kotlin.Int) -> kotlin.Int

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值