목록Kotlin (69)
Hanbit the Developer
Kotlin Documentation 시리즈에 대해 Category: Concepts 문서 링크: https://kotlinlang.org/docs/reflection.html 리플랙션은 런타임에서 프로그램의 구조를 살펴볼 수 있는 기능을 제공한다. functional or reactive style을 사용할 때, Kotlin의 일급 객체(first-class citizens, 변수나 데이터에 저장될 수 있고 함수 인자로 넘길 수 있으며 함수의 결과로서 반환될 수 있는 특징이 있다.)인 함수와 프로퍼티를 관찰해야 할 필요성이 있다. JVM dependency 리플랙션을 사용하기 위해 의존성을 추가해야 한다. dependencies { implementation("org.jetbrains.kotlin:ko..
Kotlin Documentation 시리즈에 대해 Category: Concepts 문서 링크: https://kotlinlang.org/docs/destructuring-declarations.html val (name, age) = person 위 코드는 아래 코드로 컴파일된다. val name = person.component1() val age = person.component2() for문에서도 적용된다. for ((key, value) in map) { // do something with the key and the value } Underscore for unused variables val (_, status) = getResult() Destructuring in lambdas { a..
Kotlin Documentation 시리즈에 대해 Category: Concepts 문서 링크: https://kotlinlang.org/docs/annotations.html 어노테이션은 메타 데이터를 코드에 붙일 수 있는 수단이다. 어노테이션을 정의하기 위해 annotation 구분자를 클래스 앞에 붙인다. annotation class Fancy Additional attributes of the annotation: @Target: 어떤 유형에 어노테이션이 붙을 수 있는지를 명시한다.(클래스, 함수, 프로퍼티, 표현식) @Retention: 주석이 컴파일된 클래스 파일에 저장되는지 여부, 런타임에 리플랙션을 통해 표시되어야 하는지 여부를 결정한다.(기본적으로 양쪽 모두 참임) @Repeatabl..
Kotlin Documentation 시리즈에 대해 Category: Concepts 문서 링크: https://kotlinlang.org/docs/async-programming.html Threading 비용이 큼 제한된 개수 항상 쓰레드가 available한 게 아님 사용하기 어려움: 쓰레드 디버깅, race condition 등 Callbacks fun postItem(item: Item) { preparePostAsync { token -> submitPostAsync(token, item) { post -> processPost(post) } } } fun preparePostAsync(callback: (Token) -> Unit) { // make request and return imme..
Kotlin Documentation 시리즈에 대해 Category: Concepts 문서 링크: https://kotlinlang.org/docs/equality.html Structural equality: == Referential equality: === Structural equality a == b는 다음 코드로 번역된다: a?.equals(b) ?: (b === null) equals 함수로 contents(주소값이 아니라)를 비교하며, elvis 연산자를 통해 a가 null인 경우 b 또한 null인지 체크한다. equals(other: Any?): Boolean을 override함으로써 ==을 커스터마이징 할 수 있다. Referential equality 주소 체크. primitive의..
Kotlin Documentation Category: Concepts 문서 링크: https://kotlinlang.org/docs/null-safety.html Java에서 NPE 문제가 가장 많이 일어나는 문제 중 하나이다. Kotlin에서는 다음의 경우 NPE가 발생한다. throw NullPointerException() !!의 부적절한 사용 constructor에서 초기화되지 않은 this를 사용한 경우 Elvis operator ?:를 통한 null 처리: fun foo(node: Node): String? { val parent = node.getParent() ?: return null val name = node.getName() ?: throw IllegalArgumentExcepti..
Kotlin Documentation 시리즈에 대해 Category: Concepts 문서 링크: https://kotlinlang.org/docs/control-flow.html Returns and jumps Break and continue labels loop@ for (i in 1..100) { for (j in 1..100) { if (...) break@loop } } fun foo() { listOf(1, 2, 3, 4, 5).forEach lit@{ if (it == 3) return@lit // local return to the caller of the lambda - the forEach loop print(it) } print(" done with explicit label") }..
Kotlin Documentation 시리즈에 대해 Category: Concepts 문서 링크: https://kotlinlang.org/docs/basic-types.html *Kotlin은 Java였다면 primitive로 표현될 수 있는 값을 포함하여, 모두 객체로 취급한다.(Int, Double, Boolean) 이를 통해 일관성있고 널 세이프티하며 각 타입들에 대해 추가 기능들을 제공할 수 있다. 다만 이렇게 함으로써 발생하는 성능 저하 문제를 최소화하기 위해 boxing, unboxing을 이용한다. 코틀린 컴파일러가 각 상황에 맞게 연산들을 boxing, unboxing하기 때문에 퍼포먼스 차이는 무시할만하다.(ChatGPT) Numbers 타입 추론: 명시하지 않는 경우 컴파일러가 값으로..
https://kotlinlang.org/docs/home.html Kotlin Docs | Kotlin kotlinlang.org 개인적으로 Kotlin 언어 자체에 대한 공부가 부족한 것을 느껴 공식 문서를 정리하였으며, 이렇게 정리한 내용들을 업로드할 예정입니다. 오역이나 잘못 이해하여 작성한 정보가 있을 수 있으며, 제가 생각했을 때 당연한 내용, 매우 지엽적인 내용, Experimental, 불필요한 내용 등은 필터링하였습니다.