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..
-
[GDG Seoul] Kotlin Night 2022 SeoulConference 2022. 9. 6. 19:01
https://gdg.community.dev/events/details/google-gdg-seoul-presents-kotlin-night-2022-seoul/ Kotlin Night 2022 Seoul | Google Developer Groups Virtual Event - Kotlin은 2011년 7월 19일 처음 발표된 이후 다양한 분야에서 활용되오고 있습니다. Java를 대체하기 위해 개발된 언어라는 수식은 이제 더는 의미가 없을지도 모릅니다. 이번 Kotlin Night Se gdg.community.dev Kotlin Night 2022 Seoul Agenda 7:00 PM 오프닝 7:05 PM 2022년 여름, Kotlin 현황 - Anton Arhipov 최근 Kotlin 팀은 K2 ..
-
Inheritance from an interface with '@JvmDefault' members is only allowed with -Xjvm-default optionAndroid/Error 2022. 8. 17. 11:28
Inheritance from an interface with '@JvmDefault' members is only allowed with -Xjvm-default option gradle 빌드시 해당에러가 발생하는 경우가 있습니다. 해당에러가 발생하는 이유는 @JvmDefault 해당 어노테이션이 Deprecated 되면서 kotlin의 interface 의 defalut method가 생성되지 않아서 컴파일시 문제가 발생하는 현상이 었습니다. 해결방법은 -Xjvm-default 옵션을 사용하는 해결하는것 입니다. build.gradle 의 kotlinOptions 에 freeCompilerArgs = ['-Xjvm-default=enable'] 옵션을 추가하면 정상적으로 컴파일 되는것을 확인 할 수 ..
-
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 ..
-
java.lang.NoSuchMethodException: ...<init>(...)Android/Error 2021. 3. 18. 16:13
java.lang.NoSuchMethodException: dev.dnights.baseViewHolder. (android.view.View) java 또는 kotlin 에서 getDeclaredConstructor() 를 이용해서 class를 생성할때 위와 같은 에러가 발생할경우 해당 생성자가 있는지 확인하고 proguard 나 dexguard 를 사용하고 있다면 아래의 예제처럼 예외처리를 하고 있는지 확인하여야 한다. -keepclassmembers class * extends dev.dnights.BaseViewHolder { (android.view.View); } [참고링크] emflant.tistory.com/52 Constructor 클래스의 getConstructor 와 getDeclar..
-
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..
-
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?){ //클릭시 처리 } }) 위의..
-
Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6Android/Error 2020. 1. 9. 00:05
Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6 위와 같은 에러가 발생시 App build.gradle 에 아래의 부분을 추가합니다. android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8.toString() } } 또는 preferences... -> kotlin Compier -> Kotlin to JVM -> Tar..