Kotlin8 [Kotlin] Kotlin when 문에서 else를 써야 할 때와 생략할 때 Kotlin의 when 문은 다양한 조건을 간결하고 읽기 쉽게 처리할 수 있는 도구예요. 하지만 when 문을 사용할 때 else 블록을 언제 꼭 써야 하고, 언제 생략해도 괜찮은지 헷갈릴 때가 있죠. 이 글에서는 else가 필요한 상황과 생략 가능한 경우를 명확히 설명하고, 예제를 통해 쉽게 이해할 수 있도록 정리해 봤어요.`else`를 생략할 수 있는 경우else는 모든 가능한 조건을 완벽히 처리한 경우에 생략할 수 있어요. Kotlin 컴파일러가 "여기서는 빠지는 경우가 없다"라고 확신할 수 있는 상황에서만 else 없이 코드를 작성할 수 있답니다.생략 가능한 조건enum class: 모든 값이 고정되어 있는 열거형 클래스의 경우.sealed class: 모든 서브클래스를 처리한 경우.예제 1: e.. 2024. 12. 12. [Kotlin] 코루틴(coroutine)예외 처리와 취소 Kotlin의 코루틴을 사용할 때, 예외 처리와 취소는 중요한 주제예요. 코루틴이 어떻게 예외를 전파하고, 취소 시 어떤 동작을 하는지 제대로 이해하면 더 안정적이고 신뢰할 수 있는 프로그램을 작성할 수 있어요. 이번 글에서는 코루틴의 예외 처리와 취소 메커니즘, 그리고 관련된 다양한 상황들을 예제와 함께 살펴볼게요.1. 코루틴에서의 예외 전파코루틴 빌더(`launch`, `async`)는 예외를 처리하는 방식이 달라요.`launch` 빌더:발생한 예외는 자동으로 전파돼요.uncaught exception처럼 취급되어 기본 예외 처리기`Thread.defaultUncaughtExceptionHandler`에서 처리돼요.`async` 빌더:예외가 `Deferred` 객체에 담겨 사용자에게 노출돼요.사용자가.. 2024. 12. 2. [Kotlin] StateFlow: Android 상태 관리를 위한 필수 도구 오늘은 Kotlin의 `kotlinx.coroutines.flow`에서 제공하는 강력한 상태 관리 도구인 StateFlow에 대해 알아보려고 해요. 이 글을 통해 `StateFlow`의 개념부터 실제 활용 사례까지 자세히 살펴볼게요.1. StateFlow란 무엇인가요?`StateFlow`는 `kotlinx.coroutines.flow`에서 제공하는 특별한 종류의 `Flow`로, 상태 관리에 최적화된 Hot Stream이에요. 항상 현재 상태를 보유하며, 상태가 변경될 때 구독자들에게 이를 알리는 데 사용돼요.특히 Jetpack Compose와 같이 상태 기반의 UI 프레임워크에서 유용하게 활용할 수 있어요. 뷰모델에서 상태를 관리하고, UI는 이를 구독해서 자동으로 상태를 반영하도록 설계할 때 적합해요... 2024. 11. 15. [Kotlin] 언더스코어(_)를 변수 이름에 붙이는 이유 프로그래밍을 하다 보면 변수 이름 앞에 언더스코어(_)가 붙어 있는 걸 볼 수 있을 거예요. 이게 왜 필요한지 궁금할 수 있는데, 사실 이 언더스코어는 코드의 가독성을 높이고 관리하기 쉽게 만드는 데 도움을 줘요.1. 가시성 관리 프로그래밍에서 가시성은 어떤 코드가 어디에서 보이고 접근할 수 있는지를 뜻해요. 때로는 특정 변수들이 클래스나 함수 내부에서만 보이고, 외부에서는 접근하지 못하게 해야 할 때가 있어요. 이럴 때 언더스코어를 붙이면, "이 변수는 내부에서만 쓰이고, 외부에서는 보이지 않도록 하자"라는 신호를 주는 거예요. 2. 내부 상태 변수 표시프로그램에는 내부적으로 처리되는 데이터와, 외부에 보여주는 데이터가 있어요. 예를 들어, 앱에서 할 일 목록을 관리한다고 해봅시다. 이 목록을 내부적으.. 2024. 9. 3. [Kotlin] Coroutine Suspend function 사용자 경험을 개선하고, 애플리케이션의 성능을 최적화하기 위해서는, 네트워크 요청, 데이터베이스 작업, 파일 I/O 등의 작업을 비동기적으로 처리해야 해요. Kotlin에서 비동기 프로그래밍을 지원하기 위해 suspend 함수와 코루틴을 제공해요. 오늘은 Kotlin의 suspend 함수가 무엇이고, 어떻게 사용되는지, 그리고 이를 사용함으로써 얻을 수 있는 장점에 대해서 알아볼게요.Kotlin의 Suspend 함수란?Kotlin에서 suspend 키워드가 붙은 함수는 코루틴 내에서 실행되며, 실행을 중단(suspend)하고 재개(resume)할 수 있는 "중단점(suspension point)"을 가져요. 이 중단점을 통해, suspend 함수는 실행 중에 다른 코루틴으로 제어를 양보할 수 있고, 비동.. 2024. 3. 25. [Kotlin] Data class, Sealed class Data class : 데이터를 보유하고 있는 간단한 클래스를 정의할 때 사용 Sealed class : 상태를 효율적으로 관리하고 특정 유형의 클래스 계층을 제한하여 안정성을 높이는 데 사용 Data classes(데이터 클래스) 주로 데이터를 보관하는 데 사용 equals(), hashCode(), toString(), copy() 메서드를 자동으로 생성합니다. 상속 불가 data class Person(val name: String, val age: Int) fun main() { val person1 = Person("Alice", 30) val person2 = Person("Alice", 30) println(person1 == person2) // 출력: true println(person1.. 2024. 3. 6. [Kotlin] Scope functions(let, run, with, apply, also) Scope function(범위 지정 함수)은 객체의 컨텍스트에서 코드 블록을 실행하고 해당 객체를 참조할 수 있는 함수 let, run, with, apply, also 함수 수신 객체 반환 값 확장함수 여부 let it 람다 O run this 람다 O with this 람다 X apply this 객체 O also it 객체 O let nullable한 객체를 안전하게 처리할 때 주로 사용 객체가 null이 아닌 경우에만 코드 블록이 실행 val strNull: String? = null val str: String? = "Hello" val lengthNull = strNull?.let { //실행 안 됨 println("let() called on $it") processNonNullString.. 2024. 3. 5. [Kotlin] object, companion object object : 단일 인스턴스를 관리하거나 특정한 동작을 수행할 때 사용 companion object : 클래스 내에서 정적으로 동작하는 메서드나 변수를 제공할 때 사용 Object 사용 사례 싱글톤 패턴을 구현할 때 사용됩니다. 클래스의 단일 인스턴스를 생성하고 해당 인스턴스를 여러 곳에서 접근할 수 있습니다. 객체 생성이 필요 없는 유틸리티 메서드를 제공할 때 사용됩니다. 이름이 있는 객체를 정의하여 특정한 동작을 수행하고자 할 때 사용됩니다. 특징 클래스 내부에 정의되며, 해당 클래스의 인스턴스가 단 하나만 존재합니다. 싱글톤으로 동작하며, 클래스의 인스턴스 생성 없이 사용됩니다. 멤버 변수와 메서드를 가질 수 있습니다. 사용 예시 object Singleton { var count: Int = .. 2024. 3. 5. 이전 1 다음