[英]Kotlin Map Flow of list of items
我有一個事務存儲庫,可以從中獲取Flow<List<Transaction>>
。
基於這些數據,我需要創建一個Flow<List<Source?>>
。
transaction
有sourceId
可以傳遞給sourceRepository.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)
}
}
有什么辦法可以改變map
的map
並減少這個代碼?
我認為你不能在這里避免map
。 您可以避免的是額外的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) }
}
}
此外,更喜歡val
s 而不是var
s。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.