본문 바로가기

Kotlin25

[Kotlin/Coroutine] 공식문서에서의 Flow 1 포스팅 내용과 작성된 코드는 Kotlin 공식문서에서 참조한 내용입니다. Multiple Value를 나타낼 수 있는 방법 Sequence Suspend function Flow - Collections의 chain calls 패턴의 오버헤드를 피할 수 있는 방법 중 하나 - lazy evaluation - 계산을 위해 blocking 되지 않는 비동기 - 비동기로 처리하는 stream of value Flow의 builder 함수는 flow flow { ... } builder block 내부 코드는 suspend 일 수 있음 flow에서 방출되어야 할 값은 emit()을 이용해서 처리할 수 있음 Flow는 Cold flow는 sequence와 유사한 cold stream이다 Cold Stream Ho.. 2022. 5. 14.
[Kotlin] Kotlin의 싱글톤 패턴(Singleton Pattern) Kotlin으로 프로그래밍을 하다보니 싱글톤에 대한 개념이 정확하게 서있는 것 같지 않아서, 포스팅을 통해 정리해보려고 한다. 우선 Java의 static과의 차이, object와 companion object의 차이를 중심적으로 정리한다. 싱글톤 패턴 (Singleton Pattern) 어떤 클래스의 인스턴스는 오직 하나임을 보장하며, 이 인스턴스는 전역에서 접근할 수 있는 디자인 패턴이다. 어플리케이션의 시작부터 종료까지 1번의 생성으로 고정된 메모리 영역을 가지므로, 메모리를 효율적으로 사용할 수 있다. (in Android) Java의 static VS. Kotlin의 object 1. 사용 방법에서의 차이 Java에서는 싱글톤 패턴을 구현하기 위해 많은 보일러 플레이트 코드가 발생했다. 하지만 .. 2022. 2. 5.
[Kotlin] 클로저와 표준 함수 let, also, apply, run, with 모든 내용은 이지스퍼블리싱의 Do it! 코틀린 프로그래밍을 바탕으로 정리한 것입니다. Kotlin의 표준 함수 Kotlin 표준 라이브러리에서 제공하는 함수를 이용하면 코드를 더 단순화하고 가독성을 높일 수 있음 이 표준 함수는 람다식과 고차 함수를 이용하여 선언되어 있음 람다식 val 변수 이름: 자료형 = { 매개변수[, ...] -> 람다식 본문 } val sum: (Int, Int) -> Int = { x, y -> x + y } val mul: { x: Int, y: Int -> x * y} val add: (Int) -> Int = { it + 1 } val isPositive: (Int) -> Boolean = { val isPositive = it > 0 isPositive // 반환값 .. 2021. 7. 8.
[Kotlin/Coroutine] 코루틴(Coroutine)의 개념과 사용 모든 내용은 Do it! 코틀린 프로그래밍을 바탕으로 정리한 것입니다. 프로세스나 스레드는 해당 작업을 중단(stopped)하고 다른 루틴을 실행하기 위한 문맥 교환을 시도할 때 많은 비용이 듦. 코루틴(Coroutine)은 비용이 많이 드는 문맥 교환없이 루틴을 일시 중단(suspended)하여 비용을 줄일 수 있음. → 운영체제가 스케줄링에 개입하는 과정이 필요하지 않다는 것 & 일시 중단은 사용자가 제어할 수 있음 common 패키지 launch / async : 코루틴 빌더 Job / Deferred : cancellation 지원 Dispatchers : Default는 백그라운드 코루틴을 위한 것이고 Main은 Android,.. 2021. 6. 16.
[Kotlin/Coroutine] 코루틴(Coroutine) - 동시성 프로그래밍 모든 내용은 Do it! 코틀린 프로그래밍을 바탕으로 정리한 것입니다. 동시성 프로그래밍 👆 동기와 비동기 동기적(synchronous) : 프로그래밍에서 순서대로 작업을 수행하여 1개의 루틴을 완료하고 다른 루틴을 실행하는 방식 비동기적(asynchronous) : 여러 개의 루틴이 선행 작업의 순서나 완료 여부와 상관없이 실행되는 방식 비동기 프로그래밍은 RxJava, Reactive와 같은 서드파티(third-party) 라이브러리에서 제공함 서드파티란, 기본으로 제공되는 표준 라이브러리가 아닌 다른 개발자(제3자)가 만든 라이브러리! 플러그인, 프레임워크, 유틸리티 API 등을 제공함! 👍 코틀린에서는 코루틴(Coroutine)을 서드파티가 아닌 기본으로 제공함 개별적인 작업을 루틴(routine.. 2021. 6. 3.
[Kotlin] 코틀린의 시퀀스(Sequence) 모든 내용은 Do it! 코틀린 프로그래밍을 바탕으로 정리한 것입니다. 시퀀스(Sequence) 순차적인 컬렉션으로 요소의 크기를 특정하지 않고, 나중에 결정할 수 있는 특수한 컬렉션 요소 값 생성하기 generateSequence() fun main() { val nums: Sequence = generateSequence(1) { it + 1 } println(nums.take(10).toList()) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] val squares = generateSequence(1) { it + 1 }.map {it*it} println(squares.take(10).toList()) // [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] .. 2021. 6. 2.
728x90