나는 무엇을 해야하는 반환에 틀린 흐름을 처음 기능이?

0

질문

내가 사용하고 first 함수 코 틀린 흐름입니다. 왜 내가 사용하여 이 first 기능는 수집하지 않아도 첫 시간입니다. 내가 돌아오지 않으면 어떤 부울 값을,그것은 붉은 밑줄을 나는 부울 값을 반환합니다. 어떻게 해야 하는가? 이 없 문제가하면 true 를 반환하지만,무엇인지 알고 싶은 그것이 의미하는 것입니다.

    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() 을 얻는 데 사용되는 첫 번째의 가치 흐름과 일치하는 주어진 조건이 있습니다. 그 이유는 람다는 반환 boolean 니다. 어떤 값 lambda true 를 반환하는 값을 반환하고 흐름이 취소됩니다.

만 필요한 경우 첫번째 가치,당신은 다른 하중 초과 하지 않는 동 조건자 람다.

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

할 수 있습이 어떻게 표현되는지 살펴보십시오 documentation. 귀하의 경우에만 관리에 대한 첫 번째 값보 흐름을 그래서 당신은 필요하지 않 버퍼니다.
Arpit Shukla

오 내가 이해합니다. 뿐만 아니라 필요한 첫 번째 값을 나는 필요하지 않습니다. 감사합니다!
Lee WonJoong

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................