본문 바로가기

Kotlin

(5)
[Kotlin] Extension Function (확장 함수) 안녕하세요.코틀린이 제공하는 유용한 기능으로 확장 함수가 있습니다. 오늘은 확장 함수 선언과 테스트 방법에 대해 알아보도록 하겠습니다.확장 함수Kotlin의 확장 함수 (Extension Function) 는 기존 클래스의 코드를 수정하지 않고도,그 클래스에 새로운 함수를 추가하는 기능입니다. fun String.isPalindrome(): Boolean { return this == this.reversed()}fun main() { val word1 = "madam" val word2 = "hello" println("${word1.isPalindrome()}") // true println("${word2.isPalindrome()}") // false} 확장 함수는 ..
[Kotlin] Null Safety 안녕하세요.이번에 회사에서 Java 언어를 Kotlin으로 바꾸면서 고민하고 찾아봤던 내용을 기반으로 작성했습니다. 그 중 Null 처리에 관해 고민을 많이 했었습니다.그래서 오늘은 Kotlin의 Null Safety에 대해 알아보고 어떻게 이를 적용했는지 알아보겠습니다.Null 처리기존 자바 코드의 NullException을 캐치하는 try - catch 문을 그대로 코틀린으로 가져와서 Not-Null 연산만 덧붙이고 끝내고 싶었습니다.fun printModelLength(model: String?) { try { val length = model!!.length println("The length of the model string is: $length") } ca..
[Kotlin] Coroutine (3) - 예외 처리 안녕하세요. 코루틴 예외 처리에 대해 알아보겠습니다. 사전 지식 코루틴에서 예외 처리는 기존의 예외 처리와는 조금 다른 방식으로 처리합니다. 코루틴은 비동기적으로 동작하고 여러 스레드 간에 분산되어 있을 수 있기 때문에 몇 가지 고려할 사항이 있습니다. 코루틴 구조 코루틴은 계층 구조를 가집니다. 호출한 코루틴은 자식 코루틴이 됩니다. 예외 전파 예외가 발생하면 기본적으로 부모로 전파하게 됩니다. 예외가 발생하면 해당 코루틴은 물론, 자식 코루틴의 작업이 전부 cancel 됩니다. job5에서 예외가 발생하면 job2 -> job1 까지 예외가 전파됩니다. ⇒ 최종적으로 job1을 루트로 하는 subtree 내의 모든 코루틴의 실행이 취소됩니다. 예외 처리 방법 try-catch launch 안의 코드에..
[Kotlin] Coroutine (2) - Use in Kotlin 안녕하세요. 코틀린에서 코루틴을 사용하는 방법에 대해 알아보겠습니다. 스케줄러의 코루틴 관리 스케줄러가 코루틴을 suspend & resume 해서 관리합니다. suspend 현재 코루틴 실행을 일시 중지하고 모든 로컬 변수를 저장합니다. resume 정지되었던 위치부터 정지된 코루틴을 재개합니다. 비동기 작업을 하고 싶으면 suspend 키워드를 함수 앞에 붙여주면 됩니다. suspend fun doSomething() { ... } Dispatcher Dispatcher는 코루틴이 실행되는 스레드 또는 스레드 풀을 관리하는 개념입니다. Kotlin은 코루틴을 어떤 스레드에서 실행할지 정하는데에 사용할 수 있는 3가지 dispatcher를 제공합니다. Dispatchers.Main android 기본 ..
[Kotlin] Coroutine (1) - 코루틴이란? 안녕하세요. 오늘은 코루틴에 대해 알아보도록 하겠습니다. 개념 비동기 프로그래밍을 위한 일종의 서브루틴 또는 경량 스레드 입니다. 코드의 일부를 일시 중단하고 나중에 이어서 실행할 수 있는 프로그래밍 요소 입니다. 비동기 프로그래밍은 작업이 완료될 때 까지 기다리지 않고, 다른 작업을 실행하는 프로그래밍 기법입니다. 하지만 서브 루틴과 경량 스레드는 익숙치 않은 개념입니다. 루틴 메인 루틴 프로그램의 시작 지점이자 주 실행 흐름을 담당하는 부분입니다. 메인 루틴은 다른 서브 루틴이나 함수를 호출하고, 프로그램의 주요 로직을 수행합니다. 서브 루틴 메인 루틴에서 호출되어 특정 기능을 수행하는 코드 블록입니다. 함수, 메소드, 프로시저 등으로 불리기도 합니다. 서브 루틴이 실행을 완료하면 호출한 곳으로 돌아..