Kotlin
-
kotlin operator fun invokeKotlin/Kotlin 2024. 2. 19. 00:01
개요 kotlin의 operator 중 invoke라는 연산자를 알게 되어 알아보고자 합니다. invoke 연산자란? object MyFunction{ operator fun invoke(str: String): String{ return str.lowercase() //소문자로 바꿔줌 } } operator fun invoke를 활용하여 invoke 연산자를 정의할 수 있습니다. MyFunction Object는 문자를 받아 소문자로 변환해주는 역할을 수행합니다. 다음과 같이 호출해볼 수 있습니다. val upperCaseString = "HELLO WORLD" println(MyFunction.invoke(upperCaseString)) //hello world invoke의 특성상 메서드 이름을 생..
-
공식문서로 알아보는 Coroutine context and dispatchersKotlin/코루틴 2024. 1. 29. 00:01
개요 Kotlin 공식문서를 보며 코루틴의 context와 dispatchers에 대해 알아보면서 실습해보고자 합니다. CoroutineContext란? CoroutineContext는 kotlin 표준 라이브러리에 포함되어 있는 interface입니다. Coroutine은 항상 CoroutineContext 안에서 실행됩니다. CoroutineContext는 다양한 요소들의 집합이며, 주요 요소로는 이전에 알아본 Job과 이번 시간에 알아볼 dispacther입니다. 조금 더 간단하게 표현해 보자면 CoroutineContext는 Coroutine을 어떻게 처리할지에 대한 정보를 가지고 있는 객체입니다. 이전에 CoroutineScope 내부에 코드를 작성하곤 했습니다. CoroutineScope은 C..
-
공식문서로 알아보는 Composing suspending functionsKotlin/코루틴 2023. 12. 9. 00:01
개요 Kotlin 공식문서를 보며 코루틴의 suspend function 작성방법에 대해 알아보면서 실습해보고자 합니다. 기본적으로 순차적으로 실행된다 val time = measureTimeMillis { val one = doSomethingUsefulOne() val two = doSomethingUsefulTwo() println("The answer is ${one + two}") } println("Completed in $time ms") suspend fun doSomethingUsefulOne(): Int { delay(1000L) // pretend we are doing something useful here return 13 } suspend fun doSomethingUsefulT..
-
공식문서로 알아보는 Cancellation and timeoutsKotlin/코루틴 2023. 12. 4. 00:01
개요 Kotlin 공식문서를 보며 코루틴의 취소와 타임아웃에 대해 알아보고 실습도 진행해보고자 합니다. 코루틴의 취소 val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // delay a bit println("main: I'm tired of waiting!") job.cancel() // cancels the job job.join() // waits for job's completion println("main: Now I can quit.") //결과 job: I'm sleeping 0 ... job: I'm sleeping 1 ... job: I'm sleepi..
-
공식문서로 알아보는 Coroutines basicsKotlin/코루틴 2023. 12. 3. 00:01
개요 Kotlin 공식문서를 보며 코루틴의 개념에 대해 알아보고 실습도 진행해보고자 합니다. Gradle 의존성 추가 implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core") 첫 번째 실습 fun main() = runBlocking { // this: CoroutineScope launch { // launch는 새로운 코루틴을 만들어냄 delay(1000L) // 특정 시간동안 코루틴을 일시 중단, 기본 스레드는 차단되지 않고 다른 코루틴이 실행될 수 있음 println("World!") // print after delay } println("Hello") // main 코루틴은 이전에 생성된 코루틴이 일시중단되는 것과 상관없이 실행됨 } /..
-
Kotlin Synchonized와 MultiThreadKotlin/Kotlin 2023. 11. 22. 00:01
Synchonized란? thread-safe를 위해 Java에서는 synchonized 키워드를 활용하여 data의 안정성과 신뢰성을 보장합니다. kotlin에서는 어떻게 할 수 있을지 알아보겠습니다. SynchonizedCounter 구현 class SynchronizedCounter { private var count = 0 fun increaseCount(){ count++ } fun getCurrentCount(): Int{ return count } } increaseCount를 호출하여 count를 증가시키는 클래스입니다. MultiThread Test @Test fun `kotlin Synchronized 테스트해보기`(){ val counter = SynchronizedCounter() ..
-
Kotlin과 Java의 컴파일 순서Kotlin/Kotlin 2023. 11. 11. 00:01
개요 문득 나는 Kotlin의 컴파일과정을 잘 이해하고 있는가?라는 생각이 떠올라서 코틀린이 컴파일 되는 과정에 대해 이해해보려고 합니다. "누군가 나에게 묻는다면 이해하기 쉽게 대답할 수 있는가.." Kotlin과 JVM Kotlin은 JVM위에서 동작하기 때문에 Java의 컴파일 과정과 유사합니다. *.kt 파일, *.java 파일을 코틀린 컴파일러가 *.class 파일로 변환한다. 하지만 Java와 Kotlin 코드가 동시에 활용되는 경우에는 어떻게 될까? 코틀린 파일이 코틀린 컴파일러에 의해 .class로 변환된다. (코틀린 코드가 참조하는 Java 코드가 함께 로딩된다) Java 컴파일러가 Java 코드를 컴파일하여 .class 파일을 생성하고, Kotlin이 이미 컴파일한 .class 파일의 ..
-
상태패턴과 전략패턴의 차이는 무엇일까?Kotlin 2023. 10. 17. 00:01
상태패턴이란? // State interface interface LightState { fun turnOn(light: FluorescentLight) fun turnOff(light: FluorescentLight) } // Concrete state classes class OnState : LightState { override fun turnOn(light: FluorescentLight) { println("The light is already on.") } override fun turnOff(light: FluorescentLight) { println("Turning off the light.") light.lightState = OffState() } } class OffState : ..