【发布时间】:2018-05-16 12:58:30
【问题描述】:
我已经看到了以下示例,该示例将高阶函数用作包装 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 android-studio kotlin