본문 바로가기

프로그래밍 놀이터/Kotlin50

[Kotlin] Coroutines tutorial - async code 쉽게 짜기 [Kotlin] Coroutines tutorial - async code 쉽게 짜기 https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md -Kotlin coroutines 는 async code 를 sync code 의 구조를 바꾸지 않고 짤 수 있게 도와준다. Coroutine Basics - modified내용이 바뀌어서 새로 정리하였습니다. -> Coroutine Basics ( 코루틴 기초 ) 예전 기록을 보고 싶으시면 아래 "더보기" 버튼을 눌러주세요!Hello World Coroutine -launch{ delay(1000L) println(“World!”)}println(“Hello,”)Thread.slee.. 2018. 11. 25.
[Kotlin] private constants [Kotlin] private constants Top-level 에 private 으로 정의한 variable 은 visibility 가 file 로 제한된다.그래서 아래와 같이 정의해서 쓰면 된다.private const val MY_CONST = “const” class AClass{ ...} Top-level 에 사용하고 싶지 않다면 class 안에 companion object 를 만들어 정의하는 방법도 있다.class AClass{companion object{private const val MY_CONST = "const"}} companion object, const val, java static final to kotlin, kotiln const declaration, kotlin co.. 2018. 10. 7.
[Kotlin] findViewById shows "type inference failed..." [Kotlin] findViewById shows "type inference failed..." 위와 같은 에러가 나는 이유는 findViewById 가 Android O 부터 Kotlin 에서 아래와 같이 정의되었기 떄문이다.public T findViewById(int id) { ...} 그래서 일반적인 기존 방식이 아닌 아래 방식으로 사용해야 한다.findViewById(R.id.textView) findviewbyid, Kotlin, kotlin findviewbyid, type inference failed, [Kotlin] findViewById shows "type inference failed..." 2018. 10. 6.
[Kotlin] Parcelable 을 쉽게 만들어보자 [Kotlin] Parcelable 을 쉽게 만들어보자 -Kotlin 1.1.4 버전부터 사용할 수 있는 기능입니다.Parcelable 로 만들고 싶은 녀석에 @Parcelize 라는 annotation 만 붙여주면 되죠. -// build.gradleapply plugin: "org.jetbrains.kotlin.android.extensions"androidExtensions { experimental = true // 아직 실험단계라 이 flag 를 주어야 합니다.} // kotlin@Parcelizeclass User(val firstName: String, val lastName: String) : Parcelable 위와 같이 쓰면, 우리가 생각하는 기본적 Parcelable 구현이 완성됩니다.. 2018. 4. 1.
[Kotlin] initializer 이야기 [Kotlin] initializer 이야기 https://medium.com/keepsafe-engineering/an-in-depth-look-at-kotlins-initializers-a0420fcbf546 -constructor, initializer 등이 있을 때 적용되는 순서를 아는 것이 좋다. 먼저 constructor 의 default argument 가 가장 먼저 적용된다.그 다음 property initializer 와 init block 이 수행된다. 이 때 수행 순서는 top-to-bottom 으로 정의된 순서대로 수행된다.그 다음에 constructor 가 수행된다. -open class Parent { private val a = println("Parent.a") constru.. 2018. 1. 19.
[Kotlin] Kotlin 의 숨겨진 비용 #3 [Kotlin] Kotlin 의 숨겨진 비용 #3 https://medium.com/@BladeCoder/exploring-kotlins-hidden-costs-part-3-3bf6e0dbf0a4 Delegated property -class Example{ var p: String by Delegate()} property 에 delegate 를 사용할 경우에 해당 delegate 는 operator function 인 getValue 와 setValue 를 구현해야 한다.해당 function 들은 object instance 와 property metadata 를 받는다. public final class Example{ @NonNull private final Delegate p$delegate =.. 2018. 1. 18.
[Kotlin] Kotlin 의 숨겨진 비용 #2 [Kotlin] Kotlin 의 숨겨진 비용 #2 https://medium.com/@BladeCoder/exploring-kotlins-hidden-costs-part-2-324a4a50b70 Local functions -local function 의 limit 은 inline 으로 정의될 수 없다는 것 ( 글 쓴 당시까지는, 현재버전에서 꼭 체크해보라 ).그리고 local function 을 가지고 있는 녀석도 inline 이 될 수 없다.fun someMth(a: Int): Int { fun sumSquare(b: Int) = (a+b) * (a+b) return sumSquare(1) + sumSqaure(2)} local function 은 Function object 로 바뀐다.public .. 2018. 1. 17.
[Kotlin] Kotlin 의 숨겨진 비용 #1 [Kotlin] Kotlin 의 숨겨진 비용 #1 https://medium.com/@BladeCoder/exploring-kotlins-hidden-costs-part-1-fbb9935d9b62 -“With great power comes great responsibility” 를 기억해야 한다.( 간단한 코드를 짜는 대신 대가가 있다는 얘기다 ) -Kotlin bytecode inspector 를 사용하면 Kotlin 코드가 어떻게 bytecode 로 변환되는지 볼 수 있다.Android studio plugin 으로 접할 수 있다.이를 보면 primitive type 의 boxing, code 에서 보이지 않는 기타 object 들의 instantiation, 그리고 각종 추가 method 들의 추.. 2018. 1. 16.
[Kotlin] 장점, 단점, 그리고 아쉬운 점 이야기 [Kotlin] 장점, 단점, 그리고 아쉬운 점 이야기 https://medium.com/keepsafe-engineering/lessons-from-converting-an-app-to-100-kotlin-68984a05dcb6https://medium.com/keepsafe-engineering/kotlin-the-good-the-bad-and-the-ugly-bf5f09b87e6f -위 링크의 글을 쓴 필자는 마켓에 출시된 Java 로 되어 있는 앱을 Kotlin 으로 전환했다.많은 사람들이 Kotlin lib 때문에 dex method limit 이 걸릴 것을 걱정하지만,실제 converting 후 proguard 적용시 method count 는 10% 줄어들고, code line 은 30% 줄.. 2018. 1. 15.