코틀린

    [Kotlin] Kotlin의 sealed interface란 무엇인가?

    sealed class의 한계와 sealed interface의 등장sealed class는 클래스를 상속하는 서브 클래스를 컴파일러에서 알 수 있도록 하기 위해 만들어졌다. 아래의 UIState와 같은 간단한 상속구조라면 sealed class로도 충분하다. sealed class UIState() data object Loading : UIState() data class Success(val data: UIData) : UIState() data class Error(val error: Exception) : UIState()하지만, sealed class를 사용하면, 다른 클래스들이 둘 이상의 sealed class를 상속받지 못하게 되는 한계가 있다. 예를 들어 다음과 같은 코드를 만들어보자.s..

    [Kotlin] 스마트 캐스트(Smart Cast) 기능을 사용한 안전한 타입 변환: is, as

    Java에서 안전한 타입 변환을 위해 선택했던 방법 서버와의 HTTP 통신을 통해 응답을 받아오기 위해 다음과 같은 Response 인터페이스를 상속하는 간단한 클래스 Success와 Fail을 만들었다고 해보자. sealed interface Response data class Success(val responseBody: String) : Response data class Fail(val errorMessage: String) : Response 기존 자바에서는 안전하게 타입을 변환하기 위해 타입을 변환하기 전에 instanceof 함수를 통해 타입을 체크한 후 다시 타입 변환을 해서 메서드를 호출해야 했다. public class ResponseMain { public static void mai..

    Kotlin Multiplatform의 약자는 KMP, KMM 둘 중 어느 것 일까?

    Kotlin Multiplatform의 약자는 KMP 일까 KMM 일까? Kotlin Multiplatform을 공부하면서, 이상한 점을 하나 발견했다. 어떤 사이트에서는 약자를 KMM이라고 쓰고 어떤 사이트에서는 KMP이라고 쓰는 것을 발견했는데, 일반적으로 하나의 제품을 가리킬 때 두가지 약어로 가리키는 경우는 드물기 때문에 이상하다 생각했다. 그러던 중 인터넷을 찾아보다 다음과 같은 글을 발견했다. https://blog.jetbrains.com/kotlin/2023/07/update-on-the-name-of-kotlin-multiplatform/ Update on the Name of Kotlin Multiplatform | The Kotlin Blog From now on, “Kotlin Mu..

    KMP 프로젝트 XCode 상에서 열어서 iOS 디바이스에서 실행하기

    이전 글 Android Studio KMM(Kotlin Multiplatform Mobile) 개발 환경 설정하고 앱 만들어보기 안드로이드 스튜디오에서 KMM(Kotlin Multiplatform Mobile) 앱을 개발하기 위해서는 KMM 개발용 플러그인을 설치해야 한다. 이번 글에서는 KMM 용 플러그인을 설치하는 방법과, 해당 플러그인을 사용해 프 kotlinworld.com 이전 글에서는 안드로이드 스튜디오를 사용해 KMP 프로젝트 XCode 상에서 열기 KMM 프로젝트를 XCode 상에서 열기 위해서는 iosApp 모듈을 XCode 상에서 열어야 한다. iOS앱 모듈에서는 iosApp.xcodeproj 파일이 있는데, 이곳에 XCode에서 iOS 앱 개발 환경을 구성하기 위한 메타 정보들이 들어..

    [MockK] MockK 란 무엇인가? Gradle 사용해 MockK 개발 환경 설정하고 테스트 만들어보기

    MockK란 무엇인가? MockK는 코틀린에서 테스트 시 목(Mock) 객체를 생성하는 것을 돕는 라이브러리이다. 기존에 목 객체를 만들기 위해서는 인터페이스를 목 클래스로 직접 구현을 해야 했는데, MockK를 사용하면 간단하게 목 객체를 생성할 수 있다. Gradle에 MockK 의존성 추가하기 Gradle에 MockK에 대한 의존성은 다음과 같이 추가해주면 된다. dependencies { ... // MockK 라이브러리 testImplementation("io.mockk:mockk:1.13.8") } MockK의 사용 MockK를 사용하는 것은 매우 간단하다. 예를 들어 다음과 같은 UserProfileFetcher이 있다고 해보자. class UserProfileFetcher( private ..