중괄호({}) 안에 들어있는 언어 요소를 람다(lambda)라고 부른다. 람다는 인덱스를 기반으로 값을 계산하는 식을 정의한다. 이때 인덱스를 표현하는 변수로 자동으로 선언되는 it을 사용한다. 배열 인덱스는 0부터 (배열 크기 - 1)이기 때문에 이 배열에는 1, 4, 9 등의 값이 들어간다. 지금은 이런 구문을 있는 그대로 받아들이고, 5장 고급 함수와 함수형 프로그래밍 활용하기에서 이에 대해 자세히 알아보자.
Array<Int>를 사용하는 배열은 제대로 작동하지만 모든 수를 박싱하기 때문에 그다지 실용적이지 못한 해법이다. 이런 이유로 코틀린은 더 효율적인 ByteArray, ShortArray, IntArray, LongArray, FloatArray, DoubleArray, CharArray, BooleanArray라는 특화된 배열 타입을 제공한다. JVM에서 이런 배열 타입들은 int[], boolean[] 등의 원시 타입 배열로 표현된다. 이런 특화된 배열에도 arrayOf()나 Array()에 해당하는 함수가 함께 따라온다.
val operations = charArrayOf('+', '-', '*', '/', '%') val squares = IntArray(10) { (it + 1)*(it + 1) }
자바 vs. 코틀린 자바와 달리 코틀린에는 new 연산자가 없기 때문에 배열 인스턴스 생성이 일반 함수 호출처럼 보인다. 코틀린에서는 배열 원소를 명시적으로 초기화해야 한다는 점에도 유의하라.