본 포스팅은 다음 링크의 내용을 요약 & 번역 한 것입니다.

Programmer dictionary: Parameter vs Argument, Type parameter vs Type argument
Parameter and argument are often confused, but they are totally different concepts. Let’s discuss what they are and what are the differences. We will also understand what is type parameter and type…

파라미터 vs 인자

파라미터parameter는 함수 정의에 있는 변수인 반면 인자argument는 함수에 실제로 전달되는 값이다.

fun randomString(length: Int): String {
    // ....
}

randomString(10)

여기서 length 는 파라미터이고 10은 인자다.

대화를 예로 들어보면:

  • randomString 이 예외를 던지는데.. 어떤 인자를 length 파라미터에 넘기고 있어?
  • -1이요.
  • randomStringlength 파라미터의 음수값을 받아들일수 없어!

타입 파라미터 vs 타입 인자

파라미터와 인자의 차이는 제네릭generic에도 적용이 된다.

class Box<T>

val a: Box<Int> = Box()

여기 T 타입 파라미터를 정의하는 Box 제네릭 클래스가 있다. 사용 시 타입 인자를 Int 로 지정한다. ( 클래스가 아닌 타입인 이유는 여기를 참조 )

일반적인 정의는 다음과 같다.

타입 파라미터는 제네릭에서의 타입 선언에 대한 청사진blue print 또는 플레이스 홀더place holder다.

타입 인자는 제네릭을 파라미터화parameterize 하는데 사용하는 실제actual 타입이다.