[英]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.