gpt4 book ai didi

kotlin - 如何处理基于枚举提前返回的 forEach 循环,Kotlin 中的一条路径除外

转载 作者:行者123 更新时间:2023-12-02 18:04:39 28 4
gpt4 key购买 nike

我们有一个 API 服务调用,它返回一堆验证消息。在每条消息中都有一个包含错误代码的字符串。

我们的实现将验证字符串转换为枚举值,然后我们处理枚举,因为有一些我们根本不关心的错误代码。

问题变成了,如何以 Kotlin 方式处理消息循环:

response.validationErrors?.forEach {
val mediaFailure = decodeValidationMessage(it.message)

if (mediaFailure != MediaFailure.Unknown) {
return when (mediaFailure) {
MediaFailure.Encrypted -> DomainResponse(ErrorReasonCode.ERR_DOCUMENT_ENCRYPTED)
MediaFailure.NotSupported -> Response.validationFailed()
MediaFailure.InternalError -> Response.serviceFailed()
else -> throw NotImplementedError()
}
}
}

这里我们遍历所有消息,然后一旦消息错误不是“未知”,它就会向调用者返回必要的响应。

但是,IntelliJ 需要 else 路径,即使 if 阻止了这种情况的发生。

有没有合适的 Kotlin 方法来实现这种循环?

最佳答案

据我了解,您想为第一个不是 MediaFailure.UnknownmediaFailure 返回响应,并且您不希望那个 throw NotImplementedError () 部分在你的函数中。解决此问题的一种方法是删除 if 条件并在找到 MediaFailure.Unknown 时继续 forEach 循环。

response.validationErrors?.forEach {
val mediaFailure = decodeValidationMessage(it.message)

return when (mediaFailure) {
MediaFailure.Encrypted -> DomainResponse(ErrorReasonCode.ERR_DOCUMENT_ENCRYPTED)
MediaFailure.NotSupported -> Response.validationFailed()
MediaFailure.InternalError -> Response.serviceFailed()
MediaFailure.Unknown -> return@forEach // continue the loop
}
}

关于kotlin - 如何处理基于枚举提前返回的 forEach 循环,Kotlin 中的一条路径除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73571244/

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