728x90 Kotlin17 Kotlin - Infix 함수 코틀린에는 코드를 사용하다 보면 Map을 사용한다던가 Pair를 사용한다거나 하나의 객체로 만들어주는 경우들이 종종 있습니다. val chicken: Pair = "Chicken" to "치킨" 그렇다면 저 'to'는 어떻게 "Chicken"과 "치킨"을 객체로 만들어 줄까요? package kotlin public infix fun A.to(that: B): kotlin.Pair { /* compiled code */ } to의 내부 구현 코드를 본다면 제네릭으로 두 개의 객체를 받고, A의 확장 함수로 만들어서 A와 B로 Pair 형태로 반환해 주는 코드가 내장되어 있습니다. val food1 = mapOf(Pair("Chicken", "치킨"), Pair("Pizza", "피자")) val food.. 2023. 2. 20. ::class.java는 무엇일까 안드로이드를 하다 보면 Activity를 가리키는 상황에서 MyActivity::class.java나 Class::class.java와 같은 코드를 사용하는 경우들이 종종 있습니다. 분명 코틀린을 사용하고 있는데 java가 나오는 이유가 무엇일까요? 전 글에서 더블 콜론에 대해 설명하며 짧게 지나간 내용이 있습니다. Java와 Kotlin의 Class는 다릅니다. Java의 클래스의 경우 Calss로 반환되지만 Kotlin의 클래스의 경우 KClass로 반환됩니다. 안드로이드를 하며 클래스를 반환하는 대부분의 경우에선 Java 클래스인 Class를 필요로 합니다. 따라서 저희는 Kotlin을 사용하기 때문에 KClass를 Class로 변환해야 합니다. 위 메서드는 KClass를 반환하는 방법을 알려줍니다.. 2023. 2. 7. Kotlin에서 더블 콜론(::)은 무엇일까 Kotlin을 사용하다 보면 종종 더블 콜론(::)을 사용하는 사례를 볼 수 있다. 이는 과연 무엇일까? 더블 콜론은 리플렉션(Reflection)을 위해 사용합니다. Reflection이란? Reflection is a set of language and library features that allows you to introspect the structure of your program at runtime. 공식 문서에서는 이런 식으로 소개하고 있습니다. "리플렉션은 런타임 시 프로그램 구조를 검사할 수 있는 언어 및 라이브러리 기능 집합이다."라고 표현하고 있습니다. 코드를 작성하는 시점에 런타임 시점의 컴파일된 바이트 코드 중 원하는 함수의 위치를 알 수 없기 때문에 런타임 시의 바이트 컴파일 .. 2023. 2. 7. [Kotlin] - map함수 (리스트 값 변경하기) map 함수란? Kotlin에는 map이라는 함수가 있습니다. 해당 함수는 리스트의 값을 조건에 따라 변경해 줍니다. map 함수는 filter 함수를 사용하던 것처럼, for문과 if문을 이용하여 똑같은 결과를 낼 수 있지만, 이를 보다 간결하게 작성할 수 있습니다. 간단한 예제와 함께 map 함수를 사용해 봅시다. 해당 요소들에 모두 3을 곱하는 함수를 작성할 때 함수를 작성해 봅시다. map 함수 사용하기 fun main() { val list = listOf(1, 2, 3) println(list.map { it * 3 }) } map 함수는 filter 함수와 같이 해당 결과를 리턴해준다. 하지만 filter 함수는 조건에 따라 값을 가져오기에 처음에 시작하는 값과 반환되는 값의 길이가 다를 수.. 2023. 2. 2. [Kotlin] - filter사용하기 Kotlin을 하다 보면 if를 이용하여 배열에 null이 있지는 않은지, 또한 조건에 맞는 원소가 있는지 등 for문과 if를 를 이용하여 확인하는 일들이 종종 있습니다. 하지만 코틀린의 장점은 이러한 부분들을 지원해 준다는 것입니다. 그중 코틀린 Collection에서 사용할 수 있는 filter에 대해 알아보겠습니다. 간단한 예제와 함께 살펴보시죠 val foodList = listOf("Hamburger", "Pizza", null, "Sandwich", "Chicken", "Pasta", null) 음식들의 이름이 들어있는 리스트를 선언해주었습니다. 하지만 해당 리스트에는 null들이 들어있습니다. 여기서 원래는 반복문을 이용하여 null이 아닌 것을 찾아줘야 됐지만, filter를 이용한다면 .. 2023. 1. 30. [Kotlin] lateinit, by lazy 코틀린에서는 늦은 초기화라는 것을 지원합니다. 늦은 초기화란? 원래 변수를 선언할 때 해당 변수의 값을 초기화해주어야 합니다. 하지만 늦은 초기화는 변수를 선언하는 시점이 아닌 나중에 선언해 주는 것입니다. 늦은 초기화를 사용하는 이유는? 만약에 분명 사용할 것이고, 언제 사용할 건지도 알고 있습니다. 하지만 처음 실행되는 시기에는 값을 정의 내릴 수 없다면 어떡해야 할까요?? var a: String? = null 코틀린에서는 이와 같이 널을 이용하여 코드를 선언해 줄 수 있습니다. 하지만 이는 좋은 방법이 아닙니다. 코틀린에서는 null을 허용할 수 있는 기능은 지원하긴 하지만 null을 사용하는 것을 지향하지는 않습니다. 저 변수는 nullability로 지정이 되어있기 때문에 null이 들어갈 수.. 2023. 1. 27. 이전 1 2 3 다음 728x90