参考可变参数功能参数科特林

问题描述:

有没有办法来指代参考可变参数功能参数科特林

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) {...} 

说实话,我也不知道,如果这里使用的可变参数是一个好主意,所以如果它是完全疯狂请指正。

基本上我试图为Android> 5.0实现授予权限逻辑,我不确定我们最终需要多少权限,所以这就是为什么我想在这里使用可变参数的原因。

vararg基本上只是用于创建数组的语法糖。因此,你将需要治疗的参数permissionArray<AppPermission>,这意味着你可能要做到这一点:

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

这里,all是从标准库在每个值计算出一个Boolean功能数组并返回true如果所有那些Boolean都是true