[英]Compile time error in passing vararg parameter to another function in Kotlin
[英]Referring to vararg function parameters Kotlin
有沒有辦法參考
permission.permissionName
在此代碼中:
fun Activity.isPermissionGranted(vararg permission : AppPermission) = (PermissionChecker.checkSelfPermission(this, permission.permissionName) == PackageManager.PERMISSION_GRANTED)
照原樣,我收到“無法解析的引用:permissionName”錯誤。
AppPermission類簽名如下所示:
sealed class AppPermission(val permissionName: String,
val requestCode: Int,
val deniedMessageId: Int,
val explanationMessageId: Int) {...}
老實說,我什至不確定在這里使用varargs是否是個好主意,因此,如果它完全是傻瓜,請糾正我。
基本上,我試圖為Android> 5.0實現授予權限邏輯,但我不確定最終將需要多少權限,因此這就是為什么我在這里考慮使用varargs的原因。
vararg
基本上只是用於創建數組的語法糖。 因此,您將需要像Array<AppPermission>
一樣對待參數permission
,這意味着您可能需要這樣做:
fun Activity.isPermissionGranted(vararg permissions : AppPermission) = permissions.all { permission -> (PermissionChecker.checkSelfPermission(this, permission.permissionName) == PackageManager.PERMISSION_GRANTED) }
在這里, all
距離,計算一個標准庫函數Boolean
為陣列中的每個值,並返回true
如果所有這些Boolean
s為true
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.