簡體   English   中英

Android Studio Lint檢查Kotlin高階函數

[英]Android Studio Lint Checks for Kotlin Higher Order Functions

我已經看到以下高階函數示例被用作包裝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警告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM