我想知道for-compr是否有可能产生2个val,如:
val user, account =
for {
user <- ...
account <- ..
} yield (user, account)
如果可以,我该如何明确设置类型:
val user: Future[User], account: Future[Account] = for {... }
当我尝试上述内容时,第一个变量的结果如下:
val result =
for {
..
} yield (user, account)
result._1
result._2
我个人不喜欢用_1和_2来引用数据所以我希望我能一次性返回2个单独的val。
可能的?
答案 0 :(得分:2)
在您的示例中,result
的类型为Future[(User, Account)]
,因此result._1
和result._2
没有任何意义。它必须是这样的:
result map { r =>
r._1 // user
r._2 // account
}
您可以使用匹配匿名函数的模式来改善一些事情:
result map {
case (user, account) => ...
}
答案 1 :(得分:-1)
初始化val时可以使用模式匹配。
val (x, y) = (5, 10.0)
x: Int = 5
y: Double = 10.0
所以在你的情况下
val (user: Future[User], account: Future[Account]) = for {... }