Coding Log


Kotlin

본 카테고리는 2017년 Android 공식 언어로 채택된 Kotlin에 관하여 다룬다.

Kotlin을 이용해 개발하는 Android는 추후 따로 다루기로 하고 언어 자체에만 집중한다.

참고 kotlin 공식 사이트

기본 자료형 - 배열

Kotlin은 Array 클래스로 배열을 구현한다.

Array 클래스는 size라는 속성값과 getset를 비롯한 다양한 멤버함수를 가지고 있다.

참고 get과 set은 연산자 오버로딩 규칙에 따라 []로 변환된다.

아래의 예시 코드를 보자.

class Array<T> private constructor() {
    val size: Int
    operator fun get(index: Int): T
    operator fun set(index: Int, value: T): Unit

    operator fun iterator(): Iterator<T>
    // ...
}

arrayOf

배열을 생성하는 첫 번째 방법은 arrayOf 함수이다.

arrayOf 함수에 배열에 필요한 아이템들의 값을 전달하여 생성한다.

예를 들어 arrayOf(1, 2, 3) 이라는 코드로 배열을 생성하면 [1, 2, 3] 이라는 배열을 생성한다.

arrayOfNulls

두 번째 방법으로 arrayOfNulls() 함수를 사용하면 null 을 아이템 값으로 하는 배열을 생성할 수 있다.

Array constructor

세 번째 방법으로는 배열의 크기와 초기화된 값을 전달하여 배열을 만드는 Array 생성자를 사용하는 방법이다.

아래의 예시 코드를 보자.

// Creates an Array<String> with values ["0", "1", "4", "9", "16"]
val asc = Array(5, { i -> (i * i).toString() })

참고 Java와 달리 Koltin의 배열은 변하지 않는다.
이는 Array<String>을 Array<Any>에 대입할 수 없다는 것을 말하는데, 이 제한 사항을 통해 런타임 오류를 최대한 방지한다.

참고 Kotlin의 Type Projection을 통해 Array<out Any>는 대입할 수 있는 방법이 있다. 이는 추후 포스팅에서 다룬다.

Kotlin이 제공하는 기본 자료형에 따라 Primitive 타입의 Array를 제공한다.

ByteArrayShortArrayIntArray 등이 있으며 Boxing에 대한 오버헤드가 없고, 특이하게도 Array 클래스와는 상속 관계를 가지지 않는다.

참고 Array 클래스를 상속하진 않지만 동일한 메소드와 프로퍼티값들을 가지고 있다.

Primitive 타입의 Array들은 각 타입에 맞게 팩토리 메소드를 가지고 있다.

아래의 예시를 보자.

val x: IntArray = intArrayOf(1, 2, 3)
x[0] = x[1] + x[2]

위에서 Array 클래스의 getset이 []로 변환된다고 언급하였는데, 다시 설명하자면 [] 연산자를 사용하면

get, set을 호출한다고 이해하면 된다.

DISQUS 로드 중…
댓글 로드 중…

트랙백을 확인할 수 있습니다

URL을 배껴둬서 트랙백을 보낼 수 있습니다