본문 바로가기

코틀린

(4)
[안드로이드 트러블 슈팅] 코틀린에서 가변인자(vararg)를 사용할 때 주의할 점 개발을 하다 보면 여러 가지 트러블 슈팅을 겪게 되는데 이번 포스팅에서는 안드로이드 코틀린에서 가변인자(vararg)를 사용할 때 발생한 문제와 주의할 점에 대해 공유하고자 합니다. 코틀린의 vararg 키워드는 함수에 가변 개수의 인자를 전달할 수 있어서 큰 유연성을 제공합니다. 그러나 제대로 알고 사용하지 않는다면, 예상치 못한 결과에 직면할 때가 있는데 vararg를 사용하다가 발생한 문제와 해결 과정에 대해 포스팅하겠습니다.1. 문제 상황코틀린에서 vararg를 사용해서 문자열 리소스 ID와 포맷 인자를 받아 로컬라이즈 된 문자열을 반환하는 함수를 따로 구현했었습니다. 제가 개발했던 서비스는 다국어를 지원하고 있었고 앱 내에 언어를 선택하는 기능이 있었기 때문에 Context.getString()..
[안드로이드 코틀린 Sealed class] 특성 및 코드 예제 #2 안드로이드 코틀린 Sealed Class의 3가지 특성 안녕하세요. 지난 포스팅에서는 Kotlin의 enum class 및 sealed class의 사용 이유에 대해서 살펴보았습니다. 오늘은 sealed class의 특성을 제한된 클래스 계층, 타입 안전성, 그리고 서브 클래스 타입 차이 (class, data class, object) 세 가지 기준으로 설명하겠습니다. 1. 제한된 클래스 계층 sealed class는 Kotlin에서 제한된 클래스 계층을 구성하기 위해 사용되는 특별한 종류의 클래스입니다. sealed class의 가장 큰 특징은 그 하위 클래스가 반드시 sealed class와 같은 파일 내에서 선언되어야 한다는 것입니다. 컴파일러는 sealed class와 같은 파일 내에 선언된 하..
[안드로이드 코틀린 Sealed class] 설명 및 코드 예제 #1 1. 안드로이드 코틀린의 Enum class의 한계 안녕하세요. 지난 포스팅에서는 enum class에 대해 학습했었습니다. 코틀린의 enum class는 속성, 함수를 구현할 수 있어서 다른 언어에 비해서 강력한 기능을 제공해 줬었습니다. 그런데 이러한 enum class에도 한계가 있었는데요. 아래 코드처럼 상수값 별로 다른 데이터 타입이 필요한 경우였습니다. enum class TrafficLight(val guide: String, val additionalData: String?) { RED("Stop", null), // null을 추가해줘야함 YELLOW("Slow down", null), // null을 추가해줘야함 GREEN("Go", "Additional data for green") ..
[안드로이드 코틀린 Enum class] 설명 및 코드 예시 안드로이드 코틀린의 Enum Class는 어떻게 활용되고 있을까? 안녕하세요. 이번 시간에는 코틀린의 Enum class에 대한 설명과 코드로 어떻게 사용하는지 설명하겠습니다. Enum은 코틀린뿐만 아니라 다른 언어에서도 상수값을 활용할 때 많이 사용하게 됩니다. 그런데 코틀린에서는 Enum class 내부에 속성과 함수를 구현할 수 있는 등 다양한 기능을 제공해서 캡슐화에도 유리한 편입니다. 즉, enum 상수는 클래스 객체처럼 동작할 수 있으며, enum class 내에서 고유한 속성과 함수를 가질 수 있습니다. 그래서 코드의 가독성을 높이고, 관련된 상수 값들을 캡슐화하여 관리할 수 있게 해 줍니다. 1. 코틀린의 Enum Class의 특징 when, if 조건등을 처리하면 자동완성이 되기 때문에 ..