Kotlin Flow

    Coroutines Flow 7편 - Flow 수집 완료 처리하기, Flow 명령적으로 다루기 vs 선언적으로 다루기

    Flow 수집 완료 처리하기 flow 수집이 완료되면(정상적으로 혹은 예외가 발생되어서), 완료에 따른 동작을 실행해야 할 수 있다. 이미 알 수도 있듯이, 이는 명령적인 방식 혹은 선언적인 방식 두가지 방식으로 실행될 수 있다. 명령적인 finally 블록 try/catch에 더해서, 수집기는 collect 동작이 완료됨에 따라 동작을 실행하는 finally 블록을 사용할 수 있다. fun simple(): Flow = (1..3).asFlow() fun main() = runBlocking { try { simple().collect { value -> println(value) } } finally { println("Done") } } 📌 전체 코드는 이곳에서 확인할 수 있습니다. 이 코드는 si..

    Coroutines Flow 1편 - 복수의 값들 표현하기, Flow는 차갑다

    일시 중단 함수들은 비동기적으로 단일 값을 반환한다. 그렇다면 어떻게 비동기적으로 계산된 복수의 값들을 반환할 수 있을까? 여기에서 바로 Kotlin의 Flows가 등장한다. 복수의 값들 표현하기 Kotlin에서 복수의 값들은 Collections를 사용해 표현될 수 있다. 예를 들어 3개의 숫자를 가진 List를 반환하는 simple 함수를 가지고, forEach를 사용해 그들을 모두 프린트할 수 있다. fun simple(): List = listOf(1, 2, 3) fun main() { simple().forEach { value -> println(value) } } 📌 전체 코드는 이곳에서 확인할 수 있습니다. 이 코드의 출력은 다음과 같다 : 1 2 3 Sequences 만약 CPU 리소스를..