函数返回Kotlin中的临时对象
目前我有一个私人的功能,返回一个Pair<User, User>
对象。 第一个用户是东西的发送者,第二个用户是这个东西的接收者。
我认为这Pair<User, User>
是不够的自我解释 – 或者如果你喜欢干净,即使它只是一个私人功能。
是否有可能返回一个像这样的临时对象:
private fun findUsers(instanceWrapper: ExceptionInstanceWrapper): Any { return object { val sender = userCrud.findOne(instanceWrapper.fromWho) val receiver = userCrud.findOne(instanceWrapper.toWho) } }
并像这样使用返回的值:
// ... val users = findUsers(instanceWrapper) users.sender // ... users.receiver // ... // ...
?
如果不是,Kotlin的特别对象有什么意义?
由于该类型不能用语言表示,所以使用返回类型推断:
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 }
另一个选择是设计一个数据类:
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 }