Abh*_*bhi 3 android kotlin kotlin-flow
我有一个事务存储库,我可以从中获取Flow<List<Transaction>>.
基于这些数据,我需要创建一个Flow<List<Source?>>.
可以传递给 which 的hastransaction返回一个源(如果存在),否则返回。sourceIdsourceRepository.getSource()null
视图模型代码
var transactions: Flow<List<Transaction>> = transactionRepository.transactions
var sourceList: Flow<List<Source?>> = flow {
transactions.map {
it.map { transaction ->
if (transaction.sourceId != null) {
sourceRepository.getSource(transaction.sourceId)
} else {
null
}
}
}.collect {
emit(it)
}
}
Run Code Online (Sandbox Code Playgroud)
有什么办法可以改变map并map减少这段代码吗?
我认为你不能map在这里避免 s 。您可以避免的是额外的flow构建器。
val transactions: Flow<List<Transaction>> = transactionRepository.transactions
val sourceList: Flow<List<Source?>> =
transactions.map { list ->
list.map { transaction ->
transaction.sourceId?.let { sourceRepository.getSource(it) }
}
}
Run Code Online (Sandbox Code Playgroud)
另外,更喜欢vals 而不是vars。
| 归档时间: |
|
| 查看次数: |
4996 次 |
| 最近记录: |