Kotlin语言的匿名函数和Lambda表达式学习

一、Kotlin语言的匿名函数学习

fun main() {
    val len = "Derry".count() 
    println(len)  //统计字符个数
    val len2 = "Derry".count {  //可以更改函数里的实现,这个{}就是一个函数,叫做匿名函数
        //it 等价于 D e r r y的字符Char
        it == 'r' //统计字符r的个数
    }
    println(len2)
}

二、Kotlin语言的函数类型&隐式返回学习

fun main() {
    //我们现在写函数
    //第一步:函数输入输出声明
    val metodAction : () -> String

    //第二步:对上面函数的实现
    methodAction = {
        val inputValue = 99999
        //最后一行为返回值,匿名函数不用写return,他会隐式返回
        "$inputValue Derry"
    }
            
    //第三步:调用此函数
    println(methodAction())

}
/*
fun methodAction() : String {
    return "Derry"
}
*/

三、Kotlin语言的函数参数学习

fun main() {
    //我们现在写函数
    //第一步:函数输入输出的声明    第二步:对声明函数的实现
    val methodAction : (Int,Int,Int) -> String = { number1,number2,number3 ->
        val inputValue = 99999
        "$inputValue Derry 参数一:$number1,参数二:$number2,参数三:$number3"
    }
    //第三步:调用此函数
    println(methodAction(1,2,3))
} 

/*
fun methodAction(number1:Int,number2:Int,number3:Int) : String
*/

四、Kotlin语言的it关键字特点

fun main() {
    val methodAction : (Int,Int,Int) -> String = {n1,n2,n3 ->
        val number = 2345
        println("$number Derry,n1:$n1,n2:$n2,n3:$n3")
        "$number Derry,n1:$n1,n2:$n2,n3:$n3"  //返回
    }
    //methodAction.invoke(1,2,3) 等价于methodAction(1,2,3)
    methodAction(1,2,3)
    val methodAction2 : (String) -> String = {"$it Derry"} //只要是一个参数 ,都会自带一个it参数,隐式
    println(methodAction2("DDD")) //返回打印的是DDD Derry
}

/*
fun methodAction2(it : String) : String {return "$it Derry"}
*/

五、Kotlin语言的匿名函数的类型推断

fun main() {
    //匿名函数,类型推断为String
    //方法名: 必须指定 参数类型和返回类型
    //方法名 = 类型推断返回类型
    val method1 = {v1:Double,v2:Float,v3:Int ->
        "V1:$v1,V2:$v2,V3:$v3"
        //它会根据返回的数据自动推断返回类型
    }
    //method1函数(Double,Float,Int),返回类型是String
    println(method1(37.2,23.2f,99))
    
    val method2 = {
        232.3f
    }
    //method2函数(),返回类型是float
    println(method2())
}

六、Kotlin语言的lambda学习

fun main() {
    //匿名函数 == lambda表达式
    val addResultMethod = {number1 : Int,number2 : Int ->
        "两数相加的结果是:${number1+number2}"
    }
    //addResultMethod函数:(Int,Int)->String
    println(addResultMethod(1,1))
    
    //匿名函数:入参Int,返回Any(不能明确的类型)
    //lambda表达式的参数 Int,lambda表达式的结果Any类型
    val weekResultMethod = {number : Int ->
        when(number) {
            1 -> "星期1"
            2 -> "星期2"
            3 -> "星期3"
            4 -> "星期4"
            5 -> "星期5"
            else -> -1
        }
    }
    //weekReusltMethod函数:(Int) -> Any
    println(weekResultMethod(2))
    
    //匿名函数 属于 lambda
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值