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

kotlin高阶函数部分场景示例

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

kotlin高阶函数部分场景示例

一、函数作为形参传入函数

需求:写一个方法名为“show”的函数,有两个入参,参数1是个boolean类型,参数2是一个回调函数,返回一个String类型的值

首先咱们先看下不用高阶怎么实现:

第一步:定义一个回调接口函数

interface KtCallback {
    fun show(info: String): String
}

第二步:写出此函数

fun show(isShow: Boolean, callback: KtCallback) {
    if (isShow) {
        val result = callback.show("普通 show")
        println("普通函数返回结果:$result")
    }
}

第三步:外界调用

//普通函数调用
show(true, object : KtCallback {
    override fun show(info: String): String {
        println(info)
        return "普通 ok"
    }
})

下面用高阶函数来实现这个需求

第一步:直接写出此函数

fun show(isShow: Boolean, callback: (String) -> String) {
    if (isShow) {
        val result = callback("高阶 show")
        println("高阶函数返回结果:$result")
    }
}

第二步:外界调用,三种写法均可

//高阶写法一
show(true, callback = {
    println(it)
    "高阶 OK"
})
//高阶写法二
show(true, {
    println(it)
    "高阶 OK"
})
//高阶写法三
show(true) {
    println(it)
    "高阶 OK"
}
二、自定义扩展函数

示例一、给特定对象添加扩展函数

第一步:新建一个ComonUtils.kt 文件,注意是文件,里面不要定义class

第二步:在文件中编写函数

fun Context.toast(content: String) {
    Toast.makeText(this, content, Toast.LENGTH_LONG).show()
}

第三步:在任何可以拿到Context的地方都可以直接调用此函数,比如在Activity中可以直接这样写

toast("扩展函数")

示例二、借助泛型给所有对象统一添加扩展函数

第一步:在ComonUtils.kt文件中这样定义一个函数

fun  T.log(content: String) {
    LogUtil.i(content)
}

第二步:我们在任意一个类中都可以直接调用log方法

log("所有对象都有的扩展函数")

 

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

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

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