【问题标题】:Android Studio Lint Checks for Kotlin Higher Order FunctionsAndroid Studio Lint 检查 Kotlin 高阶函数
【发布时间】: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


    【解决方案1】:

    这个问题似乎在最新版本的 Android Studio 3.2 中得到解决。使用 Kotlin 运行时 1.2.30 在 Canary 6 上测试,没有 lint 警告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      相关资源
      最近更新 更多