1 回答

TA贡献1829条经验 获得超9个赞
您没有在 lambda 中指定返回类型,它是由 Kotlin 推断的。最后一个示例不起作用,因为函数的返回类型Unit是voidJava 中的。我会尝试以下方法:
return Publishers.map(chain?.proceed(request), ::processCookie)
private fun processCookie(a: MutableHttpResponse<*>?) : MutableHttpResponse<*>? {
print("something something something")
return a
}
如果你写它也可能有效
return Publishers.map(chain?.proceed(request)) {
print("something something something")
it
}
我们这里使用 Kotlin 中 Lambda 的默认参数名称——即it. Kotlin 编译器将为您推断类型。Kotlin 还允许将函数的最后一个 lambda 参数移到括号外。
Java 的功能接口的最后一件事,例如Function<T,R>. 您可能需要明确使用名称,例如
return Publishers.map(chain?.proceed(request), Function<T,R> {
print("something something something")
it
})
whereT和R必须用实际类型替换
添加回答
举报