2021-11-30(Kotlin学习笔记)高阶函数

2021-12-02  本文已影响0人  简单快乐6

个人笔记

val name: String = "bsm"
val age: Int = 0


fun commont(){
    println("我是方法")
}

fun main() {
    commont().myRun {
        println("AAAAA")
    }

    onRun(true){
        println("打印")
    }

    onRun(true,{
        println("打印11")
    })

    val runValue = Runnable {
        println("打印2222")
    }
    // :: 取出函数
    onRun(true,runValue::run)

}

//给所有类型增加扩展函数
//T --> 范型 R --> 返回类型范型
//T.() == 给T加一个匿名函数
fun <T,R> T.myRun(m: T.() -> R) : R{
    return m()
}

fun <T,R> T.myRun1(m: () -> R) : R = m()


fun <T,R> myWith(input: T, mm: T.() -> R) : R{
    return input.mm() //this
}

fun <T, R> T.myLet(mm: T.(T) -> R) : R{
    // T == this    ()  -> R
    // mm(this) == this      vs    T.(T)    -> R
    return mm(this)
}
//inline 减少无用代码, 代码更少
//控制器 如果是true, 执行
inline fun onRun(isRun: Boolean, mm:() -> Unit){
    if(isRun) mm()
}
上一篇下一篇

猜你喜欢

热点阅读