Kotlin
-
Kotlin Delegate PatternKotlin 2023. 6. 3. 19:07
https://github.com/DNights/KotlinDelegateSample GitHub - DNights/KotlinDelegateSample Contribute to DNights/KotlinDelegateSample development by creating an account on GitHub. github.com Kotlin Delegate Pattern 이란? Kotlin Delegate Pattern은 클래스에서 특정 기능을 제공하지 않더라도 해당 기능을 제공하는 다른 클래스에 위임하는 방법입니다. 이를 통해 클래스는 더 간결하고 유지 관리가 쉬워집니다. Delegate Pattern을 사용하려면 먼저 Delegate 클래스를 정의해야 합니다. 이 클래스는 클래스가 제공해야 하는 기..
-
first-class, High-order function and inline funtionKotlin 2023. 5. 2. 17:00
first-class functions 이란? Kotlin은 일급 함수(first-class functions)를 지원하는 프로그래밍 언어입니다. 이는 Kotlin에서 함수가 일급 시민(first-class citizens)으로 다른 값(정수나 문자열 등)과 동등하게 취급된다는 것을 의미합니다. Kotlin에서는 함수를 다른 함수의 인자로 전달하거나 함수를 반환하고, 함수를 변수에 저장할 수도 있습니다. 이를 통해 함수형 프로그래밍 스타일을 더욱 쉽게 구현할 수 있습니다. 또한, Kotlin의 일급 함수 지원은 코드를 더욱 간결하고 표현력있게 만들며, 재사용 가능한 코드를 작성하는 것을 용이하게 합니다. 예를 들어, 공통된 기능(컬렉션 필터링이나 매핑 등)을 추상화하기 위해 고차 함수(higher-ord..
-
kotlinOptions useIR 의 의미는?Kotlin 2021. 12. 17. 12:33
이번에 Jetpack compose 를 공부하면서 build.gradle 에 kotlinOptions useIR 를 true로 설정하기에 해당 플레그가 무엇을 의미 하는지 확인하여 보았습니다. 해당 옵션을 알아보기 위해서 Kotlin Source code 의 컴파일 과정을 보자면 kotlin compiler은 크게 compiler frontend 와 compiler backend 로 나눠집니다. compiler frontend는 유효한 프로그램인지 확인하고 구문 및 문법 유효성 검사를 수행합니다. 그리고 중간 단계의 코드를 만들어 냅니다. compiler backend는 중간단계의 코드를 각각의 언어 맞도록 코드를 출력합니다. Kotlin/JS 는 JavaScript code Kotlin/Naitive ..
-
Kotlin Spread Operator (코틀린 스프레드 연산자)Kotlin 2020. 12. 16. 17:21
코틀린에서 배열로 된 변수를 vararg 함수의 매개변수로 전달할 수 있습니다. 이 경우 spread operator (스프레드 연산자) 를 사용할 수 있습니다. 사용법은 변수 앞에 *을 붙이는 형태로 사용합니다. ex1> fun printNumbers(vararg numbers: Int) { for (number in numbers) { println(number) } } val numbers = intArrayOf(1, 2, 3) printNumbers(*numbers) // This is the same as passing in (1, 2, 3) ex2> val a = arrayOf(1, 2, 3) val list = asList(-1, 0, *a, 4) // This is the same as p..
-
앱의 미래 : 선언적 UI 와 Kotlin MultiPlatform (Daniele Baroncelli)Kotlin 2020. 12. 15. 10:36
Daniele Baroncelli 라는 분이 작성한 블로그글입니다. 앞으로 앱개발은 Declarative UI 와 Kotlin MultiPlatform 을 이용하여 개발 되는 구조이고 공통적인 비즈리스 로직을 Kotlin MultiPlatform을 이용해 개발하고 각 플렛폼에 맞는 UI 를 DeclarativeUI 을 이용하여 개발한다는 큰 틀인것 같습니다. 아직 실무에서 적용된 사례는 없는것 같지만 앞으로 점차 이렇게 변화될 것으로 예상됩니다. 저도 요즘 관심있는 주제가 Kotlin MultiPlatform 와 JetPack Compose 입니다. 아래 블로그 링크는 영문 작성이나 설명을 위한 그림과 코드가 있으니 이해하는데 아주 어렵지는 않습니다. 관심있다면 한번 보시는걸 추천 드립니다. daniel..
-
Kotlin Cheat Sheet and Quick ReferenceKotlin 2020. 7. 23. 00:15
https://www.raywenderlich.com/6649-kotlin-cheat-sheet-and-quick-reference Kotlin Cheat Sheet and Quick Reference Download a handy 2-page PDF Kotlin Cheat Sheet and Quick Reference! www.raywenderlich.com 코틀린을 처음 사용하시는 분들은 해당 문서를 출력해서 붙여두시고 하시면 코틀린 문법을 익히는데 도움이 되실겁니다. 위의 사이트에서 PDF 파일로 다운 받으실수 있습니다.
-
Kotlin SMA (single abstract method) ConversionsKotlin 2020. 7. 22. 11:37
kotlin 1.4 부터 java -> kotlin 만 변환이 가능했던 SMA Conversions 이 Kotlin -> Kotlin 으로도 지원하도록 업데이트 되었습니다. 해당 기능은 Java8에도 있는 기능으로 Interfase에 있는 method가 하나일 경우 Lambda 식으로 변경해주는 기능입니다. 해당 기능을 사용 하면 코드를 간결하게 쓸수 있는 장점이 있습니다. 주로 예시로 드는것이 setOnClickListener 입니다. 아래의 코드가 setOnClickListener 를 일반적으로 작성했을때 입니다. button.setOnClickListener(object: View.OnClickListener { override fun onClick(v: View?){ //클릭시 처리 } }) 위의..
-
Introduction to Kotlin coroutinesKotlin 2019. 10. 10. 21:39
https://tv.naver.com/v/10353853?fbclid=IwAR0pxy6bkT_WUBUI_pbu9eQ8sPgHiT2j5ibTp-nQxZ-BJk1JnFXbYHFMMno Introduction to Kotlin coroutines NAVER Engineering | 발표자: Svetlana Isakova (JetBrains, Kotlin in Action 도서의 공동저자) 발표월: 2019.8 Introduction to Kotlin coroutines - Kotlin 개발자를 대상으로 Kotlin coroutines에 대하여 설명합니다. tv.naver.com https://www.slideshare.net/NaverEngineering/introduction-to-kotlin-corouti..
-
lateinit / lazy 의 차이점Kotlin 2019. 10. 4. 21:07
lateinit - var 변수에서만 사용합니다. - null 값으로 초기화 할 수 없습니다. - 초기화 전에는 변수를 사용할 수 없습니다 - Int, Long, Double, Float (primitive type) 에는 사용할 수 없습니다. - 변수에 대한 setter/getter properties 정의가 불가능합니다. lazy - val 에서만 사용합니다. - 호출 시점에 by lazy 정의에 의해서 초기화를 진행합니다. - 초기화를 위해서는 함수명이라도 한번 적어줘야 합니다. - lazy을 사용하는 경우 기본 Synchronized로 동작합니다. [참고링크] https://thdev.tech/kotlin/2018/03/25/Kotlin-lateinit-lazy/ Kotlin lazy proper..