Tag: 内联函数

代码覆盖内联函数

我有这个函数写在Kotlin inline fun <T> handleEmptyResult(observable: Observable<T>, crossinline resultEmptyCheckingFunc: (obj: T?) -> Boolean): Observable<T> { return observable .flatMap { if (resultEmptyCheckingFunc(it)) { Observable.error<T>(ResultEmptyError(Throwable())) } else { Observable.just(it) } } } 但是当我为这个函数创建单元测试时,它在报告中显示0覆盖。 我正在使用jacoco代码覆盖。 你们知道如何正确地单元测试内联函数吗? 谢谢!

何时在Kotlin中使用内联函数?

我知道一个内联函数可能会提高性能,并导致生成的代码增长,但我不知道什么时候使用它是正确的。 lock(l) { foo() } 编译器可以发出下面的代码,而不是为参数创建一个函数对象并生成一个调用。 ( 来源 ) l.lock() try { foo() } finally { l.unlock() } 但是我发现kotlin没有为非内联函数创建函数对象。 为什么? /**non-inline function**/ fun lock(lock: Lock, block: () -> Unit) { lock.lock(); try { block(); } finally { lock.unlock(); } }