Función que devuelve un object ad-hoc en Kotlin

Actualmente tengo una function privada que devuelve un object Pair<User, User> . El primer usuario es el remitente de algo, el segundo usuario es el receptor de esa cosa.

Creo que este Pair<User, User> no es suficientemente explicativo por sí solo, o que lo puedes limpiar, aunque solo sea una function privada.

¿Es posible regresar con un object ad-hoc como este?

 private fun findUsers(instanceWrapper: ExceptionInstanceWrapper): Any { return object { val sender = userCrud.findOne(instanceWrapper.fromWho) val receiver = userCrud.findOne(instanceWrapper.toWho) } } 

y use el valor devuelto como este:

 // ... val users = findUsers(instanceWrapper) users.sender // ... users.receiver // ... // ... 

?

Si no, ¿qué sentido tiene el object ad-hoc en Kotlin?

Como el tipo no se puede denotar en el idioma, use la inferencia del tipo de retorno:

 class Example { private fun findUsers(instanceWrapper: ExceptionInstanceWrapper) = object { val sender = userCrud.findOne(instanceWrapper.fromWho) val receiver = userCrud.findOne(instanceWrapper.toWho) } fun foo() = findUsers(ExceptionInstanceWrapper()).sender } 

Otra opción sería diseñar una class de datos:

 class Example { private data class Users(val sender: User, val receiver: User) private fun findUsers(instanceWrapper: ExceptionInstanceWrapper): Users { return Users( sender = userCrud.findOne(instanceWrapper.fromWho), receiver = userCrud.findOne(instanceWrapper.toWho) ) } fun foo() = findUsers(ExceptionInstanceWrapper()).sender } 
  • Tipo Lambda con un número desconocido de arguments
  • ¿Cómo se representan las tags de los componentes web en los frameworks html de Kotlin?
  • ¿Cómo puedo nombrar una variable automáticamente por su tipo en una plantilla en vivo?
  • Kotlin recibe el objective de hacer clic en jquery
  • Kotlin stdlib y Databinding
  • ¿Cuál es la forma más inteligente de copyr un map en Kotlin?
  • Smart Cast a 'Tipo' es imposible, porque 'variable' es una propiedad mutable que podría haber cambiado en este momento
  • ¿Cómo manejar la accesibilidad en la vista personalizada cuando no está diseñada para manejar clics?
  • Habitación con Dagger en Kotlin: Dao es nulo, cuando se inyecta en una class
  • Spring Boot e Hibernate. Manejar la fábrica de sesiones
  • Kotlin, operación genérica en Número