我看到了以下高阶函数示例,它被用作包装 Android API 版本检查的便捷方法。
fun isLollipop(func: () -> Unit) {
if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
func()
}
}
但是,在 Android Studio 3.0(Kotlin 版本 1.2.0)中,如果我尝试使用需要 Lollipop 的 API(该项目的 minSdk 是 17),我会看到 lint 错误。例如:
isLollipop { appBarLayout.elevation = 4f }
Lint 提示 elevation
属性的 API 最小值。
正如旁注,将函数编写为 inline fun
并不重要,lint 仍会给出相同的警告。使用内联函数,反编译的 Java 代码显然包含在版本检查中。
我之前发现了这个讨论,但 Kotlin 团队似乎已经集成了 linting 支持。 https://youtrack.jetbrains.com/issue/KT-7729
lint 系统是否支持查看高阶函数内部?
最佳答案
这个问题似乎在最新版本的 Android Studio 3.2 中得到了解决。使用 Kotlin 运行时 1.2.30 在 Canary 6 上测试,没有 lint 警告。
关于Android Studio Lint 检查 Kotlin 高阶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47610020/