2024/01 3

플로우란 무엇인가?

코틀린 코루틴을 요약한 내용입니다. 플로우는 비동기적으로 계산해야 할 값의 스트림 플로우 인터페이스 자체는 떠다니는 원소들을 모으는 역활 플로우 끝에 도달할 때까지 각 값을 처리하는 것을 의미 플로우의 collect는 컬렉션의 forEach와 비슷 interface Flow { suspend fun collect(collector: FlowCollector) } 플로우의 유일한 멤버 함수는 collect 다른 함수들은 확장 함수로 정의 되어 있음 interface Iterable { operator fun iterator(): Iterator } interface Sequence { operator fun iterator(): Iterator } 플로우와 값들을 나타내는 다른 방법들의 비교 원소들이 채워..

코틀린 스터디 2024.01.04

핫 데이터 소스와 콜드 데이터 소스

코틀린 코루틴을 요약한 내용입니다. 채널은 값을 핫(hot) 스트림으로 가지지만, 콜드(cold) 스트림이 필요할 때가 있습니다. 우리가 사용하는 대부분의 데이터 소스는 두 가지 종류로 구분할 수 있음 컬렉션은 핫, Channel은 핫 Sequence와 자바의 Stream은 콜드, Flow와 RxJava 스트림은 콜드 핫 vs 콜드 핫 데이터 스트림의 빌더와 연산은 즉각 실행 콜드 데이터 스트림에서는 원소가 필요할 때 까지 실행되지 않음 fun main() { val l = builList { repeat(3) { add("User$id") println("L: Added User") } } val l2 = l.map { println("L: Processing") "Processed $it" } val..

코틀린 스터디 2024.01.04

셀렉트

코틀린 코루틴을 요약한 내용입니다. 코루틴은 가장 먼저 완료되는 코루틴의 결과를 기다리는 select 함수를 제공 💡 select 함수는 코틀린 코루틴이 정식으로 출시된 이후부터 사용이 가능했지만, 여전히 실험용 지연되는 값 선택하기 여러 개의 소스에 데이터를 요청한 뒤, 가장 빠른 응답만 얻는 경우 요청을 여러 개의 비동기 프로세스로 시작 select 함수를 표현식으로 사용하고 값을 기다린다 비동기 결과값 하나만 반환하는 예제 하나의 비동기 작업이 완료됨과 동시에 끝나게 되어 결과값 반환 suspend fun requestData1(): String { delay(100_000) return "Data1" } suspend fun requestData2(): String { delay(1000) ret..

코틀린 스터디 2024.01.04