我有一個覆寫函式,它回傳一個串列流,如果不滿足條件,我發出一個 emptyList() 來掩蓋極端情況:
override fun returnFlow(): Flow<List<Item>> {
return combine(booleanFlow()) { items, boolean ->
if (!boolean) {
items
} else {
emptyList()
}
}
}
我想洗掉 else {} 邏輯并將其更改為僅在 boolean 為 false 時發出串列。理想情況下,我想要類似的東西:
override fun returnFlow(): Flow<List<Item>> {
return combine(booleanFlow()) { items, boolean ->
while (!boolean) {
items
}
}
}
我可以使用 cancelFlow() 之類的東西還是什么都不回傳?
我嘗試了在發生某些情況時如何停止 Kotlin 流程,并且由于回傳型別更改為Flow<Unit>.
uj5u.com熱心網友回復:
使用combineTransform而不是combine. 與總是發出 lambda 回傳的專案不同,這允許您通過呼叫來選擇是否發出專案emit。
override fun returnFlow(): Flow<List<Item>> {
return combineTransform(booleanFlow()) { items, boolean ->
if (!boolean) {
emit(items)
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/520073.html
標籤:科特林科特林流
下一篇:Kotlin:行內函式和共享型別
