본문 바로가기

프로그래밍 놀이터/Kotlin60

[Kotlin] Coroutine vs. thread (Light-weight thread 가 뭔 말이야?) [Kotlin] Coroutine vs. thread (Light-weight thread 가 뭔 말이야?) https://stackoverflow.com/questions/43021816/difference-between-thread-and-coroutine-in-kotlin -Coroutine 은 stackless, stackful 이렇게 두 가지 type 이 있다.Kotlin 은 stackless coroutine 이다. stackless 이기 떄문에 약간의 기능제한이 있다. -https://www.quora.com/Why-is-it-that-with-a-stackless-coroutine-only-the-top-level-routine-may-be-suspended Stackless corouti.. 2018. 11. 26.
[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.