Kotlin
-
[Kotlin] 가변인자 varargKotlin/Function 2021. 12. 25. 19:53
가변인자 vararg 변수 선언을 통해 인자 여러개를 대입할 수 있다. vararg를 정확하게 이해하여 Collection api를 보다 더 쉽게 이해하도록 하자. 가변인자를 이해하기 전에 필요한 코틀린의 배열 기초 내용을 정리하였다. 코틀린의 IntArray, ByteArray, DoubleArray, CharArray 등의 클래스 ( primitive타입명Array 클래스) -> JVM의 int[], byte[], double[], char[] 등의 primitive 타입 배열로 타겟팅된다. Library.kt 파일의 top-level 함수 타입ArrayOf 메서드를 사용하여 자바의 primitive 타입 배열인 코틀린 타입Array 객체를 생성한다. 코틀린의 Array 클래스 -> JVM의 객체 배..
-
[Kotlin] ArrayKotlin/Types 2021. 12. 16. 17:05
https://kotlinlang.org/docs/basic-types.html#arrays Basic types | Kotlin kotlinlang.org 코틀린 배열 1. primitive 타입 배열 2. 객체 타입 배열 1. primitive 타입 배열 (package kotlin 패키지 , Arrayskt 파일에 각 primitive 타입 배열 클래스들이 선언되어 있다) ByteArray, CharArray, ShortArray, IntArray, LongArray, FloatArray, DoubleArray, BooleanArray 각 배열 클래스는 iterator() 메서드를 제외하고 같은 구조로 되어있다. IntArray를 확인해보자. (자바의 int[] 배열에 맞게 자동으로 구현이 된다) ..
-
[Kotlin] ClosureKotlin/Closure 2021. 12. 15. 18:42
람다식, 익명 함수, 로컬 함수, object 표현식(object 선언 x) 는 외부의 컨텍트의 변수에 접근 가능 https://umbum.dev/598 [Kotlin] 람다(lambda), 변수 포획과 클로저, 멤버 참조 lambda ```kt { x: Int, y: Int -> x + y } ``` 코틀린 람다는 자바 람다와 달리 항상 중괄호 사이에 위치한다. 반면 메서드 참조는 중괄호 없이 써야 한다. 코틀린 람다 호출은 실행 시점에 아무런 부가 비 umbum.dev
-
[Kotlin] inline function 정리 1Kotlin/Function 2021. 12. 15. 11:11
inline function의 개념을 이해하기 위해서는 람다식, 고차함수, 함수타입 변수에 함수객체를 생성하는 법을 이해하고 있어야 한다. 설명하는 내용들은 아래의 포스팅 시리즈에 있다. [Kotlin/Function] - [Kotlin] 코틀린 함수와 함수형 프로그래밍 1 inline function의 선지식 조건이 많아 세편정도의 포스팅으로 기록할 것 같다. 람다식, 함수타입 변수에 대입된 함수, 고차함수에 전달될 인자의 함수 위의 세가지에 해당하는 함수는 실제로 Function0~ Function22 인터페이스를 구현한 객체로 만들어 진다. (함수의 파라메터 개수에 따라 Function0~ Function22) 또한 해당 함수를 호출하기 위해서는 객체의 invoke함수를 사용하는데, invoke함수..
-
[Kotlin] objectKotlin/Class and objects 2021. 12. 13. 18:54
object expression과 object declaration를 이해하기 전에 알고있어야할 개념 [Java/Class] - [Java] 내부 클래스 [Java/Class] - [Java] 익명 클래스 [Kotlin/Class and objects] - [Kotlin] Nested Class 자바 내부 클래스, 익명 클래스와 코틀린의 내부 클래스를 이해해야 object 표현식, 선언식의 깊은 이해가 가능하다. object의 내용을 다뤄보기 전에 필요한 내용들을 간단하게 정리해본다 ( 자세한 것은 위의 포스팅을 참고 ) 자바와 코틀린의 내부 클래스 선언 가능 차이 Java - 내부 클래스의 선언에는 제한이없다. 코틀린- Inner클래스 내부에 Nested클래스 정의하는 것을 가능하지 않게 해놨다. 상속..
-
[Kotlin] Nested ClassKotlin/Class and objects 2021. 12. 13. 18:12
[Java] 내부 클래스 [Java] 내부 클래스 코틀린 내부 클래스 https://hellose7.tistory.com/119 [kotlin] Nested Class [Java/Nested Class] - [Java] 내부 클래스 [Java] 내부 클래스 non-static 내부 클래스 인스턴스 생성법 반드시 외부 클래스 인스턴.. hellose7.tistory.com [Java/Class] - [Java] 익명 클래스 [Java] 익명 클래스 -익명 클래스란 class A 를 상속받아 어떠한 기능을 하는 class B를 만들어야 한다고 가정하자. class B extends A로 클래스 B를 선언한 뒤에 new B를 통해 객체를 생성한다. 만약 프로그램에서 클래스 B는 hellose7.tistory...
-
[Kotlin] by lazyKotlin/늦은 초기화 2021. 12. 12. 15:37
by 키워드 용도 1. 클래스(인터페이스 메서드 구현) 위임 2. 프로퍼티(accesor) 위임 by lazy - 프로퍼티 위임의 한 종류 코틀린은 기본 라이브러리를 통해 프로퍼티를 위임하는 여러 방법들을 제공한다. 그 중 한 종류이다. val 프로퍼티에만 사용가능하다. lazy 코드를 이해하기 위해 프로퍼티의 custom getter의 동작을 보자 person2의 custom getter = get(){ //코드 } //코드는 person2를 참조할 때(getter사용시) 호출된다. 인스턴스만 생성하고 getter를 호출하지 않아 getter의 println은 출력되지 않는다. 프로퍼티를 참조(getter 호출할떄) println코드가 실행된다는 것을 인지하고 lazy의 동작 과정을 살펴보자. 클래스 ..
-
[Kotlin] 코틀린 함수와 함수형 프로그래밍 3Kotlin/Function 2021. 9. 8. 20:47
[Kotlin/Function] - [Kotlin] 코틀린 함수와 함수형 프로그래밍 1 [Kotlin/Function] - [Kotlin] 코틀린 함수와 함수형 프로그래밍 2 함수 타입 / 수신 객체 지정 함수 타입 1. Function types 함수의 파라메터와 return형 (함수의 시그니쳐) 에 해당하는 것이 function type이다. val onClick: () -> Unit onClick의 function type 인자0개 return타입 Unit () -> Unit 일반변수선언시 타입을 선언하듯이, 함수타입변수선언시 Function type을 선언하는데 Function타입 선언시의 내용 리턴형이 Unit인 경우 생략되어서는 안된다 선택적으로 receiver type(수신 객체)을 가질 수..