inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

냉동코더의 알기 쉬운 Modern Android Development 입문

Practice6-Room 응답을 flow로 변환하기 (Flow, StateFlow, Extension functions)

확장함수에서 질문입니다!

250

jminie

작성한 질문수 29

0

확장함수 만드실때 두 번째 인자로 collect: suspend(T) -> Unit 이 분이 잘 이해가 안됩니다. collect해야될 요소 즉 T 타입이 들어가야 되는건 알겠는데 왜 람다가 쓰이는 건가요?

kotlin android architecture jetpack

답변 1

1

냉동코더

fun <T> FavoriteFragment.collectLatestStateFlow(flow: Flow<T>, collect: suspend (T) -> Unit) {
    viewLifecycleOwner.lifecycleScope.launch {
        viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
            flow.collectLatest(collect)
        }
    }
}

이 코드에서 `collectLatestStateFlow` 함수는 파라미터로 `flow`와 `collect`를 받습니다. `flow`는 UI에 표시할 `Flow` 형 데이터로 `bookSearchViewModel.favoriteBooks`이고, `collect`는 그 데이터를 표시하는데 쓰일 함수로 `bookSearchAdapter.submitList`가 됩니다.

`collectLatestStateFlow` 함수의 파라미터로 `collect: suspend (T) -> Unit`라는 람다식을 사용하면, 파라미터가 없는 suspend 함수를 받아서 작업을 수행하고 아무것도 반환하지 않는 함수를 `collect`라는 이름의 파라미터로 전달하겠다는 뜻이 됩니다. `bookSearchAdapter.submitList`가 그러한 `collect` 역할을 하는 함수로 전달되는 것이지요.

혹시 collectLatest가 아닌 collect로 사용하고 싶으시면 다음 링크를 참고하시면 됩니다.
https://stackoverflow.com/a/71603790

0

jminie

감사합니다!!

Coroutine, Flow 질문

0

401

1

Transformations import 안됨

0

588

1

moshi관련 질문입니다.

0

566

2

searchBooks() 에서 북 검색 입력을 너무 빨리 할 경우 마지막 글자로 검색이 안돼요.

0

375

1

안드로이드에서 아키텍처 패턴

0

423

1

RecyclerView.Adapter vs ListAdpater

0

473

1

Flows 와 Coroutine

1

573

1

[BookSearchAdapter] onBindViewHolder의 currentList[position] 질문

0

370

1

코루틴 메모리 관련해서 질문드립니다!

0

456

1

Java Bill Pugh Solution 에서 INSTANCE

0

469

1

nested json에서 특정 부분만 파싱하는법

0

495

1

Fragment에서의 viewBinding

0

525

3

toolbar 질문드립니다.

0

417

2

EditText 에서 delay 주셔서 처리하셨는데 flow 의 debounce() 하고 같은건가요?

2

568

1

코루틴 관련 질문

0

549

1

오류

1

494

2

강사님! 직렬화 라이브러리를 Moshi, kotlin serialization 두개를 사용하시던데 이유가 있으신가요?

1

749

1

EditText 는 kill 해도 값이 잘 저장되어있던데 혹시 제가 잘못테스트했을까요?

1

354

1

서버도 페이징 기능이 되는데 Paging 라이브러리가 필요할까요?

1

530

1

GSON 이 아닌 Moshi 를 사용하시는 이유가 있을까요?

1

1271

1

EditText 는 액티비티가 재생성되어도 값이 남아있던데 이유가 궁금해요

1

498

1

ViewModel 생성시 왜 초기값을 받지 않도록 했을까요?

1

438

1

Room DB에 id 항목 추가

0

255

1

안녕하세요. 용어에 대해 질문이 있어 글 남깁니다.

0

410

2