参考vararg函数参数Kotlin

时间:2017-08-07 08:02:53

标签: android kotlin variadic-functions

有没有办法参考

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。

1 个答案:

答案 0 :(得分:1)

vararg基本上只是用于创建数组的语法糖。因此,您需要将参数permission视为Array<AppPermission>,这意味着您可能希望这样做:

fun Activity.isPermissionGranted(vararg permissions : AppPermission) = permissions.all { permission -> (PermissionChecker.checkSelfPermission(this, permission.permissionName) == PackageManager.PERMISSION_GRANTED) }

此处,all是标准库中的函数,它为数组中的每个值计算Boolean,如果所有true都为{Boolean,则返回true 1}}。