如何在 Kotlin 中编写具有多个不同类型参数的 lambda?
How to write a lambda in Kotlin with multiple parameters of different types?
我正在为 Spring Webflux 中的 WebClient 响应编写异常处理程序。我没有在我的断片之前和之后包含代码,以保持简短和甜美。目前我有以下代码:
.retrieve()
.bodyToMono(String::class.java)
.doOnError {
WebClientResponseException::class.java,
error -> logger.error(error.getResponseBodyAsString())
}
.awaitSingle()
我是 Kotlin 和 Spring Webflux 的响应式编程的新手。我无法理解 IntelliJ 的意思
Unexpected tokens (use ';' to separate expressions on the same line)
我认为以下方法签名的语法正确:
<E extends Throwable> Mono<T> doOnError(Class<E> exceptionType, final Consumer<? super E> onError)
回答您的问题有点困难,因为您的 IDE 显示的 doOnError
函数似乎与您为其发布文档的函数不同。毕竟,IDE 表明 lambda 有效并且只有一个 Throwable
参数,但是您发布的文档需要两个参数。
如果您只想命名 lambda 参数,则必须在 lambda 的最开始就这样做:
.doOnError { error ->
// your code here
}
如果您需要指定第一个参数,您可以像在普通方法中那样在括号内指定:
.doOnError(WebClientResponseException::class.java) { error ->
logger.error(error.getResponseBodyAsString())
}
我正在为 Spring Webflux 中的 WebClient 响应编写异常处理程序。我没有在我的断片之前和之后包含代码,以保持简短和甜美。目前我有以下代码:
.retrieve()
.bodyToMono(String::class.java)
.doOnError {
WebClientResponseException::class.java,
error -> logger.error(error.getResponseBodyAsString())
}
.awaitSingle()
我是 Kotlin 和 Spring Webflux 的响应式编程的新手。我无法理解 IntelliJ 的意思
Unexpected tokens (use ';' to separate expressions on the same line)
我认为以下方法签名的语法正确:
<E extends Throwable> Mono<T> doOnError(Class<E> exceptionType, final Consumer<? super E> onError)
回答您的问题有点困难,因为您的 IDE 显示的 doOnError
函数似乎与您为其发布文档的函数不同。毕竟,IDE 表明 lambda 有效并且只有一个 Throwable
参数,但是您发布的文档需要两个参数。
如果您只想命名 lambda 参数,则必须在 lambda 的最开始就这样做:
.doOnError { error ->
// your code here
}
如果您需要指定第一个参数,您可以像在普通方法中那样在括号内指定:
.doOnError(WebClientResponseException::class.java) { error ->
logger.error(error.getResponseBodyAsString())
}