Programming Language/Kotlin

Programming Language/Kotlin

[Kotlin] BigDecimal 이란

부동 소수점 오류double, float와 같은 Primitive 변수를 사용하다보면 연산결과가 이상하게 나오는 경우가 있다.가령 예를들어서 0.3 + 0.4를 했을 때 0.70000000000000004 라는 결과가 나오는 경우처럼 말이다.이는 소수점을 다룰 때 부동소수점 오류로 인해 소수점이 제대로 표현되지 않는 문제가 발생하는 것이다.float와 double은 부동소수점 표현방식으로 구현 되어있는데, 부동소수점 표현 방식은 고정 소수점 표현 방식에 비해 표현범위가 넓지만 2진수를 사용하기 때문에 소수를 표현할 때 오차가 발생한다. 그래서 이런 문제를 예방하고자 BigDecimal을 사용한다고 한다. 부동소수점 오류에 대해서는 시간이 된다면 더욱 자세하게 정리를 해보겠다. 오늘은 BigDecimal에..

Programming Language/Kotlin

[Kotlin] const val에 대해서 공부하자

const val 이란Kotlin에서 const val과 val은 모두 불변 변수(immutable variable)를 선언할 때 사용되지만, 사용 목적과 특성이 다르다.const val은 컴파일 시간 상수(compile-time constant)를 선언할 때 사용된다. 이는 변수가 컴파일 시점에 값이 결정되어 있어야함을 의미한다. 특징기본적인 특징으로는 기본형 타입에만 사용이 가능하다(Int, Long, Boolean, String등)클래스의 companion object나 최상위 레벨에서만 선언할 수 있다.컴파일 시점에 값이 결정되므로 성능 면에서는 유리하다.const val MAX_COUNT = 100const val GREETING_MESSAGE = "Hello, World!" 그렇다면 val과는..

Programming Language/Kotlin

[Kotlin] lateinit, lazy 에 대해서 공부하자

Kotlin에서 늦은 초기화 기법클래스에서 "변수를 나중에 사용할 것이다." 라고 명시만 해놓고, 실제로 사용할 시점에 값을 할당하여 사용하는 것을 말한다. 하지만 코틀린에서는 값을 할당해주지 않는다면 변수를 사용하지 못한다. 그래서 Kotlin에서는 nullable를 허용하는데, (null에 대해서는 나중에 또 공부해보자.) 예시로 아래와 같은 코드를 들 수 있다.var str : String? = null 하지만 null은 분명히 위험하다. 또한 예외처리에 있어서 nullable를 허용하지 않는 것이 안전한다. 그렇다면 내가 사용하고 싶을 시점에 사용하는 방법을 어떤식으로 처리를 할까? 그것이 바로 객체 초기화를 늦게 하는 것이다. lateinitlateinit var myString: Stringf..

Programming Language/Kotlin

[Kotlin] Flow Retry 연산자

Kotlin Flow에서 연산자를 사용하여 작업을 재시도하는 방법에 대해서는 두 연산자가 있다. retryWhen retry retryWhen retryWhen의 정의 fun Flow.retryWhen(predicate: suspend FlowCollector.(cause: Throwable, attempt: Long) -> Boolean): Flow 그리고 다음과 같이 사용한다. .retryWhen { cause, attempt -> } 여기에는 다음과 같은 두 가지 매개변수가 있다. cause : cause는 예외의 원인을 제공하는 변수이다. 만약에 함수가 진행하면서 예외가 발생한다면 어떤한 예외인지를 나타낸다. attempt : 현재 시도를 나타내는 변수이다. 0부터 시작한다. 예를 들어, 작업을 ..

Programming Language/Kotlin

[Kotlin] Dispatchers in Kotlin Coroutines

코루틴에서 사용할 수 있는 Dispatcher 유형을 포함하여 Kotlin 코루틴의 Dispatcher 에 대해 알아보자. Dispatchers 이란 Dispatchers는 코루틴이 작업을 수행해야 하는 스레드를 결정하는 데 도움을 준다. 우리는 특정 작업을 효율적으로 수행하기 위해 코루틴을 사용한다. 코루틴은 특정 스레드에서 작업을 실행한다. 여기가 Dispatcher가 등장하는 곳이다. 코루틴은 작업을 수행해야 하는 스레드를 결정할 때 Dispatcher의 도움을 받는다. Kotlin 코루틴에는 4가지 유형의 Dispatcher가 있다. Dispatchers.Default Dispatchers.IO Dispatchers.Main Dispatchers.Unconfined Dispatchers.Defau..

Programming Language/Kotlin

[Kotlin] Flow zip 연산자로 long- running tasks in parallel 처리하기

Kotlin Flow의 zip 연산자란 Zip 연산자는 지정된 함수를 통해서 두 흐름 컬럭션의 방출을 함께 결합하고 이 함수의 결과를 기반으로 각 조합에 대해 단일 항목을 방출하는 연산자이다. 예제 코드 val flowOne = flowOf(1, 2, 3) val flowTwo = flowOf("A", "B", "C") flowOne.zip(flowTwo) { intValue, stringValue -> "$intValue$stringValue" }.collect { println(it) } 출력 1A 2B 3C Android의 실제 사용 사례 두 작업을 병렬로 실행하고 두 작업이 모두 완료되면 단일 콜백에서 두 작업의 결과를 원하는 경우 장기 실행 작업 1 private fun doLongRunning..

Programming Language/Kotlin

[Kotlin] Flow Builder를 사용하여 Flow 만들어보기

저번 포스팅에 대한 보충 내용 https://superohinsung.tistory.com/318 [Kotlin] Kotlin에서 Flow Api 코틀린 Flow Api에 대해서 공부를 해보자. Kotlin Flow Api란 비동기적인 연산을 처리하기 위한 새로운 프로그래밍 모델을 제공하는 Kotlin의 라이브러리이다. Flow는 비동기적인 작업을 쉽게 처리하고 superohinsung.tistory.com 한 위치에서 다른 위치로 파일 이동 여기서는 백그라운드 스레드의 한 위치에서 다른 위치로 파일을 이동하기 위해 Flow Builder를 사용하여 흐름을 생성하고 메인 스레드에서 완료 상태를 보낸다. val moveFileflow = flow { // move file on background thre..

Programming Language/Kotlin

[Kotlin] Kotlin에서 Flow Api

코틀린 Flow Api에 대해서 공부를 해보자. Kotlin Flow Api란 비동기적인 연산을 처리하기 위한 새로운 프로그래밍 모델을 제공하는 Kotlin의 라이브러리이다. Flow는 비동기적인 작업을 쉽게 처리하고 조절할 수 있도록 설계되었으며, 주로 비동기 스트림(Asynchronous Streams)을 다루는데 사용된다. Flow API의 핵심 개념은 데이터의 비동기적인 흐름(Flow)을 나타내는 것이다. Flow는 값을 생성하고 소비하는 비동기적인 프로시저로, 여러 개의 값을 비동기적으로 생산하고 소비할 수 있다. 이는 코루틴과 함께 사용되어 비동기 코드를 더 간결하게 만들고 복잡성을 줄일 수 있다. Flow의 주요 구성 요소 Flow Builder 작업을 수행하고 아이템을 방출하는데 도움이 된..

Tenacity_Dev
'Programming Language/Kotlin' 카테고리의 글 목록