Kotlin 函数类型1
2023-04-01 本文已影响0人
__Y_Q
package com.example.myapplication
/**
* KT 的函数类型 先有输入, 再有输出.
* KT 的函数类型为 (输入类型) -> 输出类型
*/
// (String) -> Unit 可以省略
// 即为:
//val method1= { name: String ->
// println(name)
//}
val method1 : (String) -> Unit = { name: String ->
println(name)
}
//没有输入类型
//输出类型为 void
val method2: () -> Unit = {
println("张三")
}
//输入类型为 String, 输出类型为 boolean
//(String) -> Boolean
val method3 = {str: String ->
true
}
// (String) -> Int
val method4 = {str: String ->
str.length
}
//(Int, Int) -> Int
//val method6_1 : (Int, Int) -> Int = {n1: Int, n2: Int ->
// n1 / n2
//}
val method6 = {n1: Int, n2: Int ->
n1 / n2
}
//(Any) -> Any
val method7 = {any: Any ->
any
}
//val method8 : (Char) -> Unit = {sex:Char -> Unit
// println(if(sex=='男') "先生你好" else "女士你好")
//}
// (Char) -> Unit
val method8 = {sex:Char -> Unit
println(if(sex=='男') "先生你好" else "女士你好")
}
//(Int,Int,Int) -> Int
val method9 = { n1:Int, n2:Int, n3:Int ->
n1+n2+n3
}
// (Array<String>) -> Unit
val method10 = { str: List<String> ->
for (s in str) {
println("$s")
}
}
/**
* ---------------------------高级------------------------
*/
//val method111 : (() -> Unit) -> Unit = {
// it()
//}
//输入类型 (() -> Unit)
//输出类型 Unit
val method11 = {a1:() -> Unit ->
a1()
}
/*val method12: (String, String, (Boolean)-> Unit) -> Unit = {userName: String, userPwd: String, a1: (Boolean)->Unit ->
if(userName == "张三" && userPwd == "123") {
a1(true)
}else {
a1(false)
}
}*/
//method12的简写
//输入: (String,String,(Boolean) -> Unit)
//输出: Unit
val method12 = {userName: String, userPwd: String, a1: (Boolean)->Unit ->
if(userName == "张三" && userPwd == "123") {
a1(true)
}else {
a1(false)
}
}
val testMethod12 = { isSuccess: Boolean -> Unit
if(isSuccess) println( "登录成功") else print("登录失败")
}
//返回的是函数
//输入(String)
//输出(Int)-> String
val testMethod13: (String) -> (Int) -> String = {str: String -> {
n1: Int -> "n1: $n1 是string 类型的字符串"
}}
//method13 简写
//val testMethod13 = {str: String -> {
// n1: Int -> "n1$n1 是string 类型的字符串"
//}}
fun main() {
method1("张三")
method2()
method11(method2)
method12("张三","123", testMethod12)
//返回类型为函数的调用
val rst = testMethod13("张三")//返回的是一个函数
val rst1 = rst(1000)//再调用一个函数
println(rst1)//打印
//或者简写为
val rst2 = testMethod13("张三")(10002)
println(rst2)
}