Kotlin高阶函数

以函数作为参数或返回函数的函数被称为高阶函数

fun numTest(num: Int, bool: (Int) -> Boolean): Int {
    return if (bool(num)) num else 0
}


//invoking
println(numTest(5) { it > 5 })//print 0
println(numTest(8) { it > 5 })//println 8
fun numCompare(num1: Int, num2: Int, compare: (a: Int, b: Int) -> Boolean): Int {
    return if (compare(num1, num2)) num1 else num2
}

fun biggerNum(a: Int, b: Int) = a > b

fun smallNum(a: Int, b: Int) = a < b


//invoking
println(numCompare(5, 8, ::biggerNum))//print 8
println(numCompare(1, 2, ::smallNum))//print 1
println(numCompare(10, 12) { a, b ->
    a == b
})//print 12

Android开发中RecyclerView的Item点击事件

private var listener: ((Int, String) -> Unit)? = null

fun setOnClickListener(l: (position: Int, content: String) -> Unit) {
    listener = l
}


//invoking
setOnClickListener { position, content ->
    println("$position  $content")
}

listener?.invoke(5, "China")//print 5   China
fun <T> lock(lock: Lock, body: () -> T): T {
    lock.lock()
    try {
        return body()
    } finally {
        lock.unlock()
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容