我试图操纵数据的结构,以便我可以将它传递给这个函数fun handleRequests(messages: Map<MessageDestination, List<MessageSender>>): Either<Errors.RequestError, Unit>。但我不断收到此错误: syntaxerror
Error:(27, 63) Kotlin: Type inference failed. Expected type mismatch: inferred type is Map<MessageDestination, List<Pair<MessageSender, String>>> but Map<MessageDestination, List<MessageSender>> was expected.
我需要将我的数据转换为,Map<MessageDestination, List<MessageSender>>但我不知道该怎么做。这是代码:
package testp.package1.handlers
import arrow.core.Either
import arrow.core.flatMap
import com.amazonaws.services.lambda.runtime.Context
import com.amazonaws.services.lambda.runtime.RequestHandler
interface InterfaceService {
fun handleRequests(messages: Map<MessageDestination, List<MessageSender>>): Either<Errors.RequestError, Unit>
}
abstract class AbstractMessageHandler(
override val service: InterfaceService =
ServiceImpl()) : MessageHandler<MyMessage>() {
abstract val emailType: ServiceImpl.Companion.EmailType
override val emailParser: IMessageParser<MyMessage> = M2MessageParser()
override fun handle(event: List<String>): Either<Errors.RequestError, Pair<List<Errors.RequestError>, Int>> =
emailParser.parseEmails(event)
.map { (error, messages) ->
error to messages.map { myMessage ->
MessageSender(message = myMessage.environment) to myMessage.emailAdrress
}
}
.flatMap { (errors: List<Errors.RequestError>, emailMesssages: List<Pair<MessageSender, String>>) ->
service.handleRequests(emailMesssages.groupBy { MessageDestination(it.second) }).map {
Pair(errors, emailMesssages.size)
}
}
}
data class MessageDestination(val emailAddress: String)
data class MyMessage(val environment: String, val emailAdrress: String, val phoneId: String)
data class MessageSender(val message: String)
holdtom
相关分类