मुझे क्या करना चाहिए वापस जाने के लिए है पर kotlin प्रवाह पहला समारोह?

0

सवाल

मैं का उपयोग कर रहा हूँ first समारोह kotlin से प्रवाह. कारण क्यों मैं इस का उपयोग कर first समारोह है कि मैं नहीं है इकट्ठा करने के लिए पहली बार के बाद. अगर मैं वापस नहीं किसी भी बूलियन मान, यह लाल रेखांकन है कि मैं वापस करने के लिए एक बूलियन मान. मुझे क्या करना चाहिए वापस? वहाँ नहीं कर रहे हैं किसी भी समस्या है जब मैं सिर्फ सच वापसी, लेकिन मैं करना चाहते हैं पता करने के लिए इसका क्या मतलब है.

    private fun getGroupNameData() {
        viewModelScope.launch {
            repository.loadGroupsWithFlow()
                .buffer()
                .first { newList ->
                    groupData.clear()
                    newList.forEach { newGroupData ->
                        groupData[newGroupData.id] = newGroupData.name
                    }
                    true // <- what is this boolean value?
                }
        }
    }

first कोड.

/**
 * The terminal operator that returns the first element emitted by the flow matching the given [predicate] and then cancels flow's collection.
 * Throws [NoSuchElementException] if the flow has not contained elements matching the [predicate].
 */
public suspend fun <T> Flow<T>.first(predicate: suspend (T) -> Boolean): T {
    var result: Any? = NULL
    collectWhile {
        if (predicate(it)) {
            result = it
            false
        } else {
            true
        }
    }
    if (result === NULL) throw NoSuchElementException("Expected at least one element matching the predicate $predicate")
    return result as T
}
1

सबसे अच्छा जवाब

2

इस अधिभार के Flow.first() प्रयोग किया जाता है पाने के लिए पहली मूल्य के प्रवाह से मेल खाता है जो दिए गए विधेय. यही कारण है कि लैम्ब्डा आप की उम्मीद है वापस करने के लिए एक बूलियन अंत में. के लिए जो भी मूल्य लैम्ब्डा रिटर्न सच है, कि मूल्य वापस आ जाएगा और प्रवाह रद्द कर दिया जाएगा ।

अगर आप की जरूरत है केवल पहले मूल्य, आप चाहिए अन्य अधिभार नहीं है, जो स्वीकार करते हैं एक विधेय लैम्ब्डा.

val newList = repository.loadGroupsWithFlow().buffer().first() // Use this first()
groupData.clear()
newList.forEach { newGroupData ->
    groupData[newGroupData.id] = newGroupData.name
}

Btw मैं नहीं लगता है कि बफर की आवश्यकता है । आप को दूर कर सकते हैं कि.

2021-11-24 06:26:16

धन्यवाद, तुम सकता है क्यों की व्याख्या बफर की आवश्यकता नहीं है?
Lee WonJoong

आप कर सकते हैं पर एक नज़र रखना अपने प्रलेखन. आपके मामले में आप केवल देखभाल के बारे में पहली मूल्य द्वारा उत्सर्जित प्रवाह तो आप की जरूरत नहीं कुछ भी बफर.
Arpit Shukla

ओह, मैं समझता हूँ । के रूप में मैं केवल पहले मूल्य, मैं की जरूरत नहीं बफर. धन्यवाद!
Lee WonJoong

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................