美文网首页
Kotlin 函数类型1

Kotlin 函数类型1

作者: __Y_Q | 来源:发表于2023-04-01 22:15 被阅读0次
    
    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)
    
    }
    

    相关文章

      网友评论

          本文标题:Kotlin 函数类型1

          本文链接:https://www.haomeiwen.com/subject/ggslddtx.html