簡體   English   中英

Kotlin Map 項目清單流程

[英]Kotlin Map Flow of list of items

我有一個事務存儲庫,可以從中獲取Flow<List<Transaction>>
基於這些數據,我需要創建一個Flow<List<Source?>>

transactionsourceId可以傳遞給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)
    }
}

有什么辦法可以改變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 s 而不是var s。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM