参考可变参数功能参数科特林
问题描述:
有没有办法来指代参考可变参数功能参数科特林
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
基本上只是用于创建数组的语法糖。因此,你将需要治疗的参数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
。