一、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
}