【问题标题】:Referring to vararg function parameters Kotlin参考 vararg 函数参数 Kotlin
【发布时间】:2017-08-07 16:12:31
【问题描述】:

有没有办法参考

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 实现授予权限逻辑,但我不确定我们最终需要多少权限,所以这就是我考虑在这里使用可变参数的原因。

【问题讨论】:

    标签: android kotlin variadic-functions


    【解决方案1】:

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

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

    这里,all 是标准库中的一个函数,它为数组中的每个值计算 Boolean,如果所有 Booleans 都是 true,则返回 true

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多