더북(TheBook)

3.1.2 위치 기반 인자와 이름 붙은 인자

기본적으로 함수 호출 인자는 순서대로 파라미터에 전달된다. 첫 번째 인자는 첫 번째 파라미터, 두 번째 인자는 두 번째 파라미터라는 식이다. 코틀린에서는 이런 방식의 인자 전달을 위치 기반 인자(positional argument)라고 한다.

fun rectangleArea(width: Double, height: Double): Double {
  return width*height
}

fun main() {
  val w = readLine()!!.toDouble()
  val h = readLine()!!.toDouble()
  println("Rectangle area: ${rectangleArea(w, h)}")
}

자바나 다른 여러 언어에서 위치 기반 인자를 널리 쓰고 있다. 반면 코틀린은 이름 붙은 인자(named argument)라고 불리는 방식도 제공한다. 이름 붙은 인자는 위치가 아니라 파라미터의 이름을 명시함으로써 인자를 전달하는 방식이다. 예를 들어 rectangleArea() 호출을 다음과 같이 할 수도 있다.

rectangleArea(width = w, height = h)

심지어는 다음 코드처럼 호출해도 된다.

rectangleArea(height = h, width = w)

이름 붙은 인자를 사용하면 인자의 실제 순서는 중요하지 않다. 따라서 방금 본 두 함수 호출은 모두 rectangleArea(w, h)와 똑같은 뜻이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.