키워드
→ Kotlin
노트
Java 에서 Kotlin 넘어오면 Java 코드 그대로 Koltin을 쓰는 경우가 있다.
- Kotlin의 1st 객체는 함수다. Java는 익히 알다시피 클래스이고. 여기서 부터 차이점이 다수 존재한다.
- 함수형과 객체지향, 선언형과 명령형을 적절히 섞어서 쓰자.
- Kotlin은 멀티 패러다임을 추구하는 언어이다.
Kotlin 에서만 유효할 수 있는 것들이 뭐가 있을지 하나씩 살펴보자.
- 특이한 연산자들
- 비트연산은 <<, >> 가 아니다(shl, shr)
- Elvis Operator
- 삼항 연산이 없다. 대신 if 문을 expression 으로 쓸 수 있다.
- Null Check 하기
- ?
- !!, 그러나 남용하지 말자 위험하다
- Companion Obejct
- 자바의 static 개념과 유사, 그러나 다르다.
- private 프로퍼티 접근 용이. 팩토리 패턴에 적합
- 예외 처리하기
- runCatching은 유용하다
- Util Function 사용하기
- apply
- 보일러플레이트 줄이기 적합
- with
- apply 와 같다. 그러나 스코프가 다르다
- also
- 객체 초기화와 동시에 쓰기 적합
- let
- null 체크시 같이 많이 쓰임
- run
- IIFE 처럼 쓸 수 있다
- Extension Function, property, member
- 확장함수는 유틸성 클래스의 남용을 줄여준다.
- Kotlin Collection (Java Stream)
- Kotlin의 컬렉션과 Java의 스트림은 본질적으로 다음과 같은 몇가지 차이를 지닌다.
- Kotlin은 불변(immutable)이 기본, Java는 가변(mutable)이 기본
- kotlin은 항상 지연연산을 한다.
- 동등성 비교
- JS랑 비슷하게 동치 비교 연산자가 2개 존재한다.
- 값을 비교하기 vs 참조 동등성을 비교하기
- Destructuring declarations
- JS와 비슷하다. data class 사용시 유용하다.
- Sealed Class
- Enum 과 유사하지만 더 유연한 타입 가변성을 제공한다.
- Infix Function
- 중위 표기법, kotlin의 map 에서 기본적으로 쓰고 있다.
- HOC와 Lambda
- 고차함수의 개념.
- lateinit 과 by lazy
- 지연 초기화 방식이 kotlin에는 2가지가 존재
- Delegated properties
- 프로퍼티 접근자
- Type alias
- 타입스크립트처럼 쓸 수 있다.
- 참조도 당연히 가능하다.
그밖에도 여기담긴 방대한 개념들
- Coroutine
- Kotlin DSL (TypeSafeBuilder)
- reflection
- ksp (구 kapt, 어노테이션 프로세서)
- 함수형 프로그래밍
- 커링
참조
요약
요약: 본문이 곧 요약이다.