kotlin匿名函数

2022-10-31  本文已影响0人  Bfmall

匿名函数学习笔记###


/**
 * DESC   : kotlin中的匿名函数
 */
class KtBaseFunTest02 {

    companion object {
        const val TAG = "KtBaseFunTest02"
    }

    /**
     * 隐式函数
     */
    fun testNestFun01() {
        val length1 = "lanny".count()
        val length2 = "lanny".count {
            Log.d(TAG, "it="+it)//此时,it相当于 l a n n y 中的每一个字符
            it == 'y'
        }
        Log.d(TAG, "测试匿名函数:length1="+length1+", length2="+length2)
    }

    /**
     * 函数类型&隐式返回学习
     */
    fun testNestFun02() {
        //第一步:函数输入输出的声明
        /**
         * 函数变量      函数名      参数(无参)      返回值
         * val      methodAction    :    ()        ->   String
         */
        val methodAction : () -> String

        //第二步:对上面函数的实现
        methodAction = {
            val age  = 1
            "年龄age=${age}" // == 背后隐式 return "年龄age=${age}";
            //隐式函数不需要写return, 最后一行就是返回值,
        }
        //methodAction是方法名,调用方法methodAction()
        Log.d(TAG, "testNestFun02==>methodAction="+methodAction())
    }

    /**
     * 隐式函数参数学习
     */
    fun testNestFun03() {
        /**
         * 第一步:函数的输入输出的声明
         * 第二步:对声明函数的实现
         */
        val methodAction2 : (String ,Int) -> String = { name, age ->
            "结果name="+name+",age="+age
        }
        //第三步调用methodAction函数并传参
        Log.d(TAG, "testNestFun03==>methodAction=" + methodAction2("elle", 11))

        //相当于如下:
        /*fun methodAction2(name:String ,age : Int) : String {
            return "结果name="+name+",age="+age
        }*/
    }

    /**
     * kotlin中 it 关键字
     */
    fun testNestFun04() {
        /**
         * 第一步:函数的输入输出的声明
         * 第二步:对声明函数的实现
         */
        val methodAction: (String) -> String = {
            "结果: $it "//it == 参数
        }
        Log.d(TAG, "testNestFun04==>"+methodAction("lananna"))

    }

    /**
     * 匿名函数的返回值类型判断
     */
    fun testNestFun05() {
        val methodAction = { name:String, age : Int ->
            "结果name="+name+", age="+age
            //最后一行是返回类型
        }

        Log.d(TAG, "testNestFun05==>"+methodAction("hahha", 88))

        //methodAction2 : () -> Unit
        val methodAction2 = {
            "hahahahha"
        }
        Log.d(TAG, "testNestFun05==>"+methodAction2())

        //返回类型为Int
        val methodAction3= { age:Int ->
            age
            //最后一行是返回类型
        }
        Log.d(TAG, "testNestFun05==>"+methodAction3(99))
    }

    /**
     * 匿名函数== lambda表达式(匿名函数 属于 lambda)
     */
    fun testNestFun06() {
        val methodAction = { name: String, age: Int ->
            "结果name=" + name + ", age=" + age
            //最后一行是返回类型
        }

        Log.d(TAG, "testNestFun05==>" + methodAction("hahha", 88))
    }
}
上一篇下一篇

猜你喜欢

热点阅读