Function 프로시저(Visual Basic)

Function 프로시저는 Function 문과 End Function 문 사이에 포함된 일련의 Visual Basic 문입니다. Function 프로시저는 작업을 수행한 다음 호출 코드에 제어를 반환합니다. 제어를 반환할 때 값도 함께 반환합니다.

프로시저가 호출될 때마다 Function 문 다음의 첫 실행 문에서 시작하여 첫 번째 End Function, Exit Function 또는 Return 문이 나타날 때까지 프로시저 문이 실행됩니다.

모듈, 클래스 또는 구조체에서 Function 프로시저를 정의할 수 있습니다. 프로시저는 기본적으로 Public입니다. 즉, 프로시저가 정의된 모듈, 클래스 또는 구조체에 액세스할 수 있는 응용 프로그램의 어느 곳에서나 해당 프로시저를 호출할 수 있습니다.

Function 프로시저는 호출 코드에 의해 자신에게 전달되는 상수, 변수, 식 등의 인수를 포함할 수 있습니다.

선언 구문

Function 프로시저를 선언하는 구문은 다음과 같습니다.

[modifiers] Function functionname[(parameterlist)] As returntype

' Statements of the Function procedure.

End Function

modifiers는 오버로딩, 재정의, 공유 및 숨김에 대한 액세스 수준과 정보를 지정할 수 있습니다. 자세한 내용은 Function 문(Visual Basic)을 참조하십시오.

모든 매개 변수는 Sub 프로시저(Visual Basic)에서 선언하는 것과 똑같은 방식으로 선언합니다.

데이터 형식

모든 Function 프로시저는 각 변수와 마찬가지로 특정 데이터 형식을 갖습니다. 이 데이터 형식은 Function 문에서 As 절로 지정되며 함수가 호출 코드에 반환하는 값의 데이터 형식을 결정합니다. 다음은 이에 대한 선언 샘플입니다.

Function yesterday() As Date
End Function
Function findSqrt(ByVal radicand As Single) As Single
End Function

자세한 내용은 Function 문(Visual Basic)의 "구성 요소"를 참조하십시오.

반환 값

Function 프로시저가 호출 코드로 되돌려주는 값을 반환 값이라고 합니다. 프로시저는 다음과 같은 두 가지 방법으로 이 값을 반환합니다.

  • 프로시저의 하나 이상의 문에서 고유 함수 이름에 값을 할당합니다. 제어는 Exit Function 또는 End Function 문이 실행될 때까지 호출 프로그램에 반환되지 않습니다. 다음은 이에 대한 예입니다.

    Function functionname[(parameterlist)] As returntype

    ' The following statement does not transfer control back to the calling code.

    functionname = expression

    ' When control returns to the calling code, expression is the return value.

    End Function

  • 이 프로시저는 Return 문을 사용하여 반환 값을 지정하고 호출 프로그램에 제어를 즉시 반환합니다. 다음은 이에 대한 예입니다.

    Function functionname[(parameterlist)] As returntype

    ' The following statement immediately transfers control back to the calling code and returns the value of expression.

    Return expression

    End Function

반환 값을 함수 이름에 할당하는 방식을 사용하면 프로그램이 Exit Function이나 End Function 문을 만나기 전까지 프로시저에서 제어를 반환하지 않는다는 장점이 있습니다. 따라서, 예비 값을 할당한 다음 필요에 따라 나중에 조정할 수 있습니다.

자세한 내용은 Function 문(Visual Basic)의 "반환 값"을 참조하십시오.

반환 배열

Function 프로시저가 배열 데이터 형식을 반환하는 경우 함수 내 배열의 개별 요소에 액세스할 수 없습니다. 배열의 개별 요소에 액세스할 경우 컴파일러에서는 이 동작을 프로시저에 대한 재귀적 호출로 해석합니다. 다음은 이에 대한 예입니다.

Function allOnes(ByVal n As Integer) As Integer()

For i As Integer = 1 To n - 1

' The following statement generates a COMPILER ERROR.

allOnes(i) = 1

Next i

' The following statement generates a COMPILER ERROR.

Return allOnes()

End Function

위 예제에서 컴파일러는 시도된 할당 allOnes(i) = 1을 할당문 왼쪽의 allOnes 호출로 해석합니다. 또한 시도된 Return allOnes()를 인수가 없는 호출로 해석합니다. 두 문은 모두 컴파일러 오류를 생성합니다.

호출 구문

할당문의 오른쪽이나 식에 프로시저 이름과 인수를 포함하여 Function 프로시저를 호출합니다. 선택적 인수가 아닌 모든 인수에 대하여 값을 제공하고 인수 목록을 괄호로 묶어야 합니다. 인수가 제공되지 않는 경우 괄호를 생략해도 됩니다.

Function 프로시저를 호출하는 구문은 다음과 같습니다.

lvalue = functionname[(argumentlist)]

If ((functionname[(argumentlist)] / 3) <= expression) Then

Function 프로시저를 호출할 때 항상 반환 값을 사용할 필요는 없습니다. 반환 값을 사용하지 않으면 함수의 모든 동작이 수행되고 반환 값은 무시됩니다. 대개 MsgBox를 이러한 방법으로 호출합니다.

선언과 호출에 대한 설명

다음 Function 프로시저는 직각 삼각형의 두 변의 값을 사용하여 가장 긴 변(빗변)의 길이를 계산합니다.

Function hypotenuse(ByVal side1 As Single, ByVal side2 As Single) As Single
    Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function

다음 예제에서는 일반적인 hypotenuse 호출을 보여 줍니다.

Dim testLength, testHypotenuse As Single
testHypotenuse = hypotenuse(testLength, 10.7)

Visual Basic 런타임 함수

Visual Basic 런타임은 Microsoft.VisualBasic 네임스페이스에 있는 많은 함수를 제공합니다. 여기에는 Beep, MsgBox, StrComp 등과 같은 공용 함수가 포함됩니다. 이러한 함수는 직접 작성한 Function 프로시저를 호출하는 것과 같은 방법으로 호출합니다.

참고 항목

작업

방법: 값을 반환하는 프로시저 만들기(Visual Basic)

방법: 프로시저에서 값 반환(Visual Basic)

방법: 값을 반환하는 프로시저 호출(Visual Basic)

참조

Function 문(Visual Basic)

개념

Visual Basic의 프로시저

Sub 프로시저(Visual Basic)

Property 프로시저(Visual Basic)

연산자 프로시저(Visual Basic)

프로시저 매개 변수 및 인수(Visual Basic)