Kotlin

    [Kotlin Collection] 3. Kotlin map, flatMap 을 이용해 데이터 변환하기

    목차로 돌아가기 [Kotlin Collection] Kotlin에서 확장함수를 이용해 Collection 조작하기 목표 Collection 확장함수가 하는 일을 이해한다. 자유롭게 확장 함수를 이용해 데이터를 조작한다. 개요 Kotlin에서는 일반 컬렉션에도 함수형 프로그래밍을 위한 확장 함수를 제공하여, 데이터를 kotlinworld.com 목표 변환함수의 개념을 익히고, map과 flatMap의 차이점을 익힌다. map을 사용하는 방법을 익힌다. flatMap을 사용하는 방법을 익힌다. 확장함수 목록 map map는 Collection을 다른 형태로 변환해주기 위해 사용한다. map : map은 인자로 받은 transform function을 통해 기존 Collection을 변형시킨 List를 ret..

    [Kotlin Collection] 2. Kotlin filter, take, drop 을 이용해 데이터 필터링 하기

    목차로 돌아가기 [Kotlin Collection] Kotlin에서 확장함수를 이용해 Collection 조작하기 목표 Collection 확장함수가 하는 일을 이해한다. 자유롭게 확장 함수를 이용해 데이터를 조작한다. 개요 Kotlin에서는 일반 컬렉션에도 함수형 프로그래밍을 위한 확장 함수를 제공하여, 데이터를 kotlinworld.com 목표 필터링 함수 filter, take, drop의 개념을 익힌다. filter을 사용하는 방법을 익힌다. take을 사용하는 방법을 익힌다. drop을 사용하는 방법을 익힌다. 확장함수 목록 filter filter는 Collection이 확장하는 Iterable인터페이스의 확장함수로 특정한 조건을 적용하여 Collection의 데이터를 필터링합니다. 코틀린에서..

    [Coroutine] Kotlin을 위한 코루틴(Coroutine) 정리 - Coroutines for Android and Kotlin

    들어가며 코루틴을 공부하고나서 언젠가는 정리해야지 하고 있었는데, 이번에 시간이 있어서 정리를 하게 되었다. 아래 내용을 모두 이해할 수 있다면 코루틴의 기초적인 부분은 모두 이해했다고 볼 수 있으며, 왠만큼 복잡한 비동기 작업도 무난히 처리할 수 있다고 생각한다. 목차 [Coroutine] 1. Coroutine 은 어떻게 스레드 작업을 최적화 하는가? [Coroutine] 1. Coroutine 은 어떻게 스레드 작업을 최적화 하는가? Thread 구조와 다중 Thread 작업의 필요성 하나의 프로세스(Process) 에는 여러 스레드(Thread) 가 있고, 각 스레드는 독립적으로 작업을 수행할 수 있다. 예를 들어 JVM 프로세스 상에서는 스레드는 그림1 kotlinworld.com [Corout..

    [Coroutine 부록] 3. withContext 사용해 join, await 대체하기

    기존에 다른 코루틴에 보내진 작업의 결과를 수신하려면 다음과 같이 코드를 만들어야 했다 suspend fun main() { val deferred: Deferred = CoroutineScope(Dispatchers.IO).async { "Async Result" } val result = deferred.await() println(result) } Deferred로 결과값을 감싼 다음 await() 메서드를 통해 해당 값이 수신될 때까지 기다려야 한다. withContext를 이용한 비동기 작업 순차화 withContext를 이용하면 withContext의 두가지 특성 때문에 이러한 작업을 간단하게 만들 수 있다. withContext 블록의 마지막 줄의 값이 반환 값이 된다. withContext..

    [Coroutine] 10. Deferred를 이용한 결과값 수신

    Deferred란 Deferred는 직역하면 연기라는 뜻을 가진다. "결과값 수신을 연기한다"라는 뜻인데, 이는 미래의 어느 시점에 결과값이 올 것을 뜻한다. Deferred의 의미와 같이 "Deferred는 결과값을 수신하는 비동기 작업" 이라고 정의될 수 있다. Deferred는 Job이다. public interface Deferred : Job { public suspend fun await(): T public val onAwait: SelectClause1 .. } Deferred는 결과가 있는 비동기 작업을 수행하기 위해 결과 값이 없는 Job을 확장하는 인터페이스이다. 즉, Deferred는 Job이며, 이로 인해 Deferred는 Job의 모든 특성을 갖는다. 8번 글이었던 Job의 상태..