Prolouge

Kotlin의 가변 인자에 대해 공부하던 중, Array를 생성할 때 생성자와 관련된 내용을 알게 되어서 작성하려고 한다.

Subject

코틀린은 어떻게 보면 2가지 형태의 배열이 존재한다. 자바의 Primitive Type의 배열을 지원하는 IntArray, LongArray, XXXArray 형태가 그것이다. 이외에도 Array 형태를 가지기도 하는데, 이번에는 Array 형태의 배열에 대해서 알아보려고 한다.

배열을 생성하는 법

  1. 내부에서 제공하는 API를 사용하는 방법
    • 배열을 선언과 동시에 값을 초기화할 경우, arrayOf(value) 함수를 이용하면 된다.
    • 배열의 크기만 지정하고 값은 나중에 저장할 경우, arrayOfNulls(size) 함수를 이용하면 된다. 이때, 지정된 크기만큼 null로 초기화된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* created by victory_woo on 2020/10/28
* */

fun main(args: Array<String>) {
initTest()
}

private fun initTest() {
val array: Array<Int> = arrayOf(1, 2, 3) [1,2,3]
val array2 = arrayOfNulls<Int>(3) [null, null, null]

array.forEach { print("$it ") }
println()
array2.forEach { print("$it ") }
}
  1. 생성자를 이용하는 방법
    • Array 생성자를 이용하며, Array(size, 람다식)으로 구성되어 있다.
    • 람다식을 통해 초기화를 자유롭게 지정할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* created by victory_woo on 2020/10/28
* */

fun main(args: Array<String>) {
initWithConstructor()
}

private fun initWithConstructor() {
val array: Array<Int> = Array(3) { i -> i } [0,1,2]
// 좌측 i : index
// 우측 i : index에 들어갈 값
// i는 0부터 시작.

array.forEach { print("$it ") }
println()
}

2번 방법처럼 생성자를 이용해서 Array를 초기화하는 방법은 처음봤다. 항상 arrayOf()를 이용하곤 했는데, 2번 방법도 상황에 따라 유용하게 사용할 수 있을 것 같다.

Ref