Kotlin quádruplo, quintuplo, etc. para desestruturação
Estou procurando uma maneira limpa de criar objetos destrutíveis em linha.kotlin.Pair
ekotlin.Triple
abrangem muitos casos de uso, mas às vezes há mais objetos que precisam ser passados.
Um exemplo de caso de uso é o RXzip
, em que os resultados de várias chamadas de E / S precisam ser mapeados para outro objeto:
Single
.zip(repositoryA.loadData(someId),
repositoryB.loadData(someId),
repositoryC.loadAll(),
repositoryD.loadAll()),
{ objectA, objectB, objectsC, objectsD -> /*some Kotlin magic*/ }
)
.map { (objectA, objectB, objectsC, objectsD) -> /*do the mapping*/ }
Estou tentando descobrir o que seria da parte "alguma mágica de Kotlin". Se houvesse apenas 3 repositórios, seria
Triple(objectA, objectB, objectsC)
Preciso criar uma nova classe de dados para isso e para qualquer caso de n-tupla, ou existe outra maneira?