kotlin - kotlin Poet中如何实现 suspend 关键字修改高阶函数

标签 kotlin kotlinpoet

我想使用“suspend”关键字修改高阶函数。以下是我想要的:

public fun login(io: suspend () -> ResLogin): Unit {}

我尝试使用:

val lambdaTypeName = LambdaTypeName.get(returnType = responseBean)

但得到以下代码:

public fun login(io: () -> ResLogin): Unit {}

不知道如何下手,官网API查了很久也没有找到类似的答案。希望老大指点!

最佳答案

答案已经找到了,可以通过LambdaTypeName.copy(suspending = true)来解决,具体代码如下:

val lambdaTypeName = LambdaTypeName.get(returnType = responseBean)
                FunSpec.builder(it.methodName).addParameter(ParameterSpec.builder("io",lambdaTypeName.copy(suspending = true)).build())

关于kotlin - kotlin Poet中如何实现 suspend 关键字修改高阶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70517435/

相关文章:

gradle - 在Kotlin构建文件中执行注册的任务

kotlin - final 或 val 函数参数或在 Kotlin 中?

java - 从 java 调用带有参数作为密封类的 Kotlin 函数

java - Spring Boot Freemarker 从 2.2.0 升级失败

kotlin - 使用文件模板生成 Kotlin 代码

kotlin - 如何使用 KotlinPoet 为 PropertySpec 获取正确的 TypeName

kotlin - 我应该如何用我自己的类型形成列表属性类型

android - Koin:如何降低模块的可见性(私有(private)非导出模块)

kotlin - 可空值的 KClass 引用

java - Kotlin Poet 空构造函数生成 - 继承