Kotlin高階函式

weixin_33912445發表於2018-10-17

以函式作為引數或返回函式的函式被稱為高階函式

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()
    }
}

相關文章