gpt4 book ai didi

android - Kotlin Map 项目列表流

转载 作者:行者123 更新时间:2023-12-05 00:17:50 27 4
gpt4 key购买 nike

我有一个交易存储库,我可以从中获取 Flow<List<Transaction>> .
基于这些数据,我需要创建一个 Flow<List<Source?>> .

transactionsourceId可以传递给 sourceRepository.getSource()如果存在则返回源,否则返回 null .

ViewModel代码

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)
}
}

有没有办法改变mapmap并减少这段代码?

最佳答案

我不认为你可以在这里避免 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 优于 var

关于android - Kotlin Map 项目列表流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70959826/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com