kotlin中函数作为参数和函数作为返回值实例练习

Posted 汤米粥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kotlin中函数作为参数和函数作为返回值实例练习相关的知识,希望对你有一定的参考价值。

kotlin中函数作为参数和函数作为返回值,在工作中写代码有时会被卡住,怎么写都提示语法错误,今天专门研究一下几种常用的用法。

package com.example.test

import android.util.Log
import java.util.*

class KotlinSample 

    //直接定义函数

    //带参数,没有返回值的函数
    private var myPrint: (msg: String) -> Unit =  msg -> Log.e("xxx5",msg) 

    //带参数,有返回值的函数
    private var hello : (msg: String) -> String =  "hello $it.uppercase()!!" 

    //函数作为参数
    fun callMethods() 
        method1 
            var hello = "hello world"
            Log.e("xxx1", hello)
            hello
        

        method2 
            var hello = "hello world"
            Log.e("xxx2", hello)
        

        method3("hello world")  msg ->
            Log.e("xxx3", msg)
        

        //函数作为返回值
        var method4 = method4("hello world")
        method4.invoke()

        //使用定义的函数
        myPrint.invoke("hello world")
        
        var greet = hello("zhang san")
        myPrint.invoke(greet)
    

    //返回String 但是不需要return 直接将字符串写在最后一行
    private fun method1(method: () -> String) 
        method.invoke()
    

    //Unit表示没有返回值
    private fun method2(method: () -> Unit) 
        method.invoke()
    

    //函数作为参数,有一个输入参数时。不能直接带给它,需要另外一个参数传进来。
    private fun <T> method3(msg1: T, method: (msg: T) -> Unit) 
        method.invoke(msg1)
    


    //函数作为返回值
    private fun method4(str: String): () -> Unit 
        Log.e("xxx4", "这一部分不返回,直接运行")
        return 
            var strNew = str.uppercase(Locale.getDefault())
            Log.e("xxx4", strNew)
        
    

运行结果:

2022-07-28 11:05:04.308 20589-20589/com.example.test E/xxx1: hello world
2022-07-28 11:05:04.308 20589-20589/com.example.test E/xxx2: hello world
2022-07-28 11:05:04.308 20589-20589/com.example.test E/xxx3: hello world
2022-07-28 11:05:04.308 20589-20589/com.example.test E/xxx4: 这一部分不返回,直接运行
2022-07-28 11:05:04.308 20589-20589/com.example.test E/xxx4: HELLO WORLD
2022-07-28 11:05:04.309 20589-20589/com.example.test E/xxx5: hello world
2022-07-28 11:05:04.309 20589-20589/com.example.test E/xxx5: hello ZHANG SAN!!

以上是关于kotlin中函数作为参数和函数作为返回值实例练习的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin语法总结:函数类型和高阶函数

Kotlin泛型 ① ( 泛型类 | 泛型参数 | 泛型函数 | 多泛型参数 | 泛型类型约束 )

Kotlin 函数定义

13-01高阶函数

Kotlin高阶函数内联函数以及集合变换序列

Kotlin之标准函数的学习讲解(withapply)