栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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  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!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031854.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号