위치 및 이름으로 인수 전달(Visual Basic)
Sub 프로시저나 Function 프로시저를 호출할 때 인수를 위치로(프로시저의 정의에 나타난 순서)로 전달하거나 위치에 관계없이 이름으로 전달할 수 있습니다.
이름으로 인수를 전달하는 경우에는 인수의 선언된 이름 뒤에 콜론과 등호(:=)가 오고 그 뒤에 인수 값이 오도록 지정합니다. 명명된 인수는 순서에 관계 없이 제공할 수 있습니다.
예를 들어, 다음 Sub 프로시저는 세 개의 인수를 받습니다.
Sub studentInfo(ByVal name As String,
Optional ByVal age As Short = 0,
Optional ByVal birth As Date = #1/1/2000#)
Debug.WriteLine("Name = " & name &
"; age = " & CStr(age) &
"; birth date = " & CStr(birth))
End Sub
이 프로시저를 호출할 경우 위치나 이름으로, 또는 둘을 혼합 사용하여 인수를 제공할 수 있습니다.
위치로 인수 전달
다음 예제에서처럼 쉼표로 구분한 위치로 인수를 전달하여 studentInfo 프로시저를 호출할 수 있습니다.
Call studentInfo("Mary", 19, #9/21/1981#)
위치 인수 목록에서 선택적 인수를 생략하는 경우 쉼표를 사용하여 그 위치를 남겨두어야 합니다. 다음 예제에서는 age 인수 없이studentInfo를 호출합니다.
Call studentInfo("Mary", , #9/21/1981#)
이름으로 인수 전달
또한 다음 예제에서처럼 쉼표로 구분한 이름으로 인수를 전달하여 studentInfo 프로시저를 호출할 수 있습니다.
Call studentInfo(age:=19, birth:=#9/21/1981#, name:="Mary")
위치 및 이름을 함께 사용하여 인수 전달
다음 예제에서처럼, 하나의 프로시저 호출에서 위치와 이름을 모두 사용하여 인수를 제공할 수 있습니다.
Call studentInfo("Mary", birth:=#9/21/1981#)
위 예제에서는 birth가 이름으로 전달되므로 생략된 age 인수의 위치를 쉼표로 남겨두지 않아도 됩니다.
위치와 이름을 모두 사용하여 인수를 제공하는 경우 항상 위치 인수가 앞에 와야 합니다. 이름으로 인수를 제공하면 남은 인수도 모두 이름으로 제공해야 합니다.
이름으로 선택적 인수 제공
이름으로 인수를 전달하는 방식은 선택적 인수가 둘 이상인 프로시저를 호출하는 경우에 특히 유용합니다. 이름으로 인수를 제공하면 연속적으로 쉼표를 사용하여 생략된 위치 인수를 표시할 필요가 없기 때문입니다. 또한, 전달할 인수와 생략할 인수를 더 쉽게 구분할 수 있습니다.
이름으로 인수를 제공하는 경우 제한 사항
인수를 이름으로 전달하더라도 필수적 인수는 반드시 입력해야 하며 선택적 인수만 생략할 수 있습니다.
매개 변수 배열은 이름으로 전달할 수 없습니다. 배열을 이름으로 전달하면 프로시저를 호출할 때 매개 변수 배열에 대한 인수를 쉼표로 구분하여 끝없이 나열해야 하고, 컴파일러에서 여러 인수를 하나의 이름과 연결하지 못하기 때문입니다.