kotlin-study-demo/src/senior/Lambda/InlineFunc.kt
2021-07-01 16:02:09 +08:00

38 lines
609 B
Kotlin

package senior.Lambda
import java.util.concurrent.locks.Lock
import java.util.concurrent.locks.ReentrantLock
/**
* 内联函数
*
*
*/
class InlineFunc {
}
fun main(args: Array<String>) {
var lock = ReentrantLock()
check(lock) {
println("内联函数方法体")
}
check { it == 2 }
}
inline fun <T> check(lock: Lock, body: () -> T): T {
lock.lock()
try {
return body()
} finally {
lock.unlock()
}
}
inline fun check(noinline function: (Int) -> Boolean){
test(function)
}
fun test(function: (Int) -> Boolean){
println("编译通过")
}