kotlin 函数 进阶

参考:https://developer.android.com/kotlin/learn

我们在用kotlin时 会有 let、 with 、also 等高阶函数,点击去初看源码晦涩难懂简直无从下眼!

源码also方法大概的意思是 : 万能类 泛型 T 添加了 also方法,  形参是声明了的一个传值 为T的方法没有返回值,而且also方法是有返回 T的

public inline fun <T> T.also(block: (T) -> Unit): T {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    block(this)
    return this
}

再细细捋一捋  ,我们都知道 kotlin声明 变量 和函数 的方式,这样的话我们就可以 以变量的方式声明函数 变量myFun跟 函数 myFun功能相同. 

var a: String? = null 


fun myFun() : Unit { }


var myFun: () -> Unit = { }

这样就不难理解理解also的形参了,结合lambda的用法这就是kotlin高阶函数初成。

fun main() {
    demo<Int, Int>(2, 2)
}

fun <T, R> demo(a: T, r: R) {

    var mmm: (T) -> R = {
        println("执行myAlso(mmm))")
        r
    }

    fun T.myAlso(m: (T) -> R): R {
        return m(this)
    }
    a?.myAlso(mmm)
    a?.myAlso {
        println("执行myAlso { }")
        r
    }
}

总结:kotlin 高阶函数 很类似java 中用的  抽象类的多态使用, 语言的设计同归而殊途!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值