38 lines
609 B
Kotlin
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("编译通过")
|
|
} |