gpt4 book ai didi

function - 为什么不支持高阶函数中的注释?

转载 作者:行者123 更新时间:2023-12-02 12:09:31 25 4
gpt4 key购买 nike

这是我在 higher-order 中使用自定义注释时遇到的错误。功能:

image error

有没有办法在高阶函数中使用注释?如果不是,那将是什么替代解决方案(除了使用枚举)?

这是我的自定义注释的样子:

companion object {
private const val PERMISSION_DENIED = 1
private const val PROVIDER_DISABLED = 2
private const val SUCCESS = 3

@IntDef(PERMISSION_DENIED, PROVIDER_DISABLED, SUCCESS)
@Retention(AnnotationRetention.SOURCE)
annotation class PreconditionResult
}

最佳答案

解决方法

有一个涉及功能接口(interface)的解决方法(注意下面的fun interface)。

注:不幸的是,在 kotlin 代码中定义的功能接口(interface)仅在即将发布的 1.4 版本之后才可用。您现在可以使用 1.4-M1 进行测试.

fun interface FulFilled {
fun execute(@PreconditionResult fulFilled: Int): Unit
}

private fun checkPrecondition(context: Context, fulFilled: Fulfilled) {
}

checkPrecondition(context) { fulFilled -> println("Got $fulFilled")}

可能的解决方案

我不确定它是否能达到您的需要,但也可以从您的类型定义中删除参数名称:

private fun checkPrecondition(context: String, callback: (@PreconditionResult Int) -> Unit) {

您需要将注释的目标更改为一种类型:

    @Retention(AnnotationRetention.SOURCE)
@Target(AnnotationTarget.TYPE)
annotation class PreconditionResult

关于function - 为什么不支持高阶函数中的注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62117977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com