더북(TheBook)

public(공개)이라는 변경자도 있다. 하지만 최상위 함수는 디폴트로 공개 가시성을 갖기 때문에 이 변경자는 불필요한 중복일 뿐이다.

지역 변수처럼 함수 내부에 지역 함수를 정의할 수 있으며, 이 함수의 영역은 함수를 감싸는 블록으로 한정된다.

fun main() {
  fun readInt() = readLine()!!.toInt()
  println(readInt() + readInt())
}

fun readIntPair() = intArrayOf(readInt(), readInt()) // error: unresolved reference: readInt

지역 함수는 자신을 둘러싼 함수, 블록에 선언된 변수나 함수에 접근할 수 있다. 이런 변수에는 지역 함수를 둘러싸고 있는 함수의 파라미터도 포함된다.

fun main(args: Array<String>) {
  
  fun swap(i: Int, j: Int): String {
    val chars = args[0].toCharArray()
    val tmp = chars[i]
    chars[i] = chars[j]
    chars[j] = tmp
    return chars.concatToString()
  }
  
  println(swap(0, args[0].lastIndex))
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.