gpt4 book ai didi

kotlin - 如何注解lambda的返回值

转载 作者:行者123 更新时间:2023-12-04 17:07:29 24 4
gpt4 key购买 nike

我有一个带有 lambda 参数的函数:

private fun MyFun(
progress: () -> Float,
) {
// ...
}

我想用 @FloatRange(from = 0.0, to = 1.0) 注释 progress lambda 的返回值,但不知道该怎么做。我解决这个问题的所有尝试都会导致语法错误。我哪里错了?

最佳答案

你可以定义一个功能接口(interface)来描述你的类型,并在那里注释它:

fun interface ProgressCallback {
@FloatRange(from = 0.0, to = 1.0) fun progress(): Float
}

private fun myFun(progress: ProgressCallback) {
// ...
}

fun foo() {
myFun { 5.0f } // error, doesn't conform to FloatRange
}

仅供引用,如果您传递函数引用而不是 lambda,或者如果您间接调用返回 Float 的函数,lint 不够复杂,无法检测到满足要求的失败:

fun bar() = 5.0f

fun foo() {
myFun(::bar) // no error
myFun { bar() } // no error
}

或者,如果您返回除单个文字值之外的任何内容:

fun foo() {
myFun { 1.0f * 2.0f } // no error
}

关于kotlin - 如何注解lambda的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70254542/

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