Kotlin 函数类型1


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) -> Unit
val method10 = { str: List ->
    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)

}

你可能感兴趣的:(Kotlin 函数类型1)