함수 식
업데이트: 2007년 11월
람다 식을 정의하는 코드 및 매개 변수를 선언합니다.
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] ) _
expression
구성 요소
parameterlist
선택적 요소. 이 프로시저의 매개 변수를 나타내는 지역 변수 이름의 목록입니다. 목록이 비어 있는 경우에도 괄호는 있어야 합니다. 자세한 내용은 매개 변수 목록을 참조하십시오.expression
필수적 요소. 단일 식입니다. 식의 값에 의해 함수의 형식과 함수 호출 시 반환되는 값이 결정됩니다.
설명
람다 식은 단일 값을 계산하고 반환하는 이름이 없는 함수입니다. 대리자 형식을 사용할 수 있는 모든 위치에 람다 식을 사용할 수 있습니다. 단 RemoveHandler에 대한 인수로는 사용할 수 없습니다. 대리자에 대한 정보 및 대리자와 함께 람다 식을 사용하는 방법은 Delegate 문 및 완화된 대리자 변환을 참조하십시오.
람다 식 구문
람다 식의 구문은 표준 함수의 구문과 유사합니다. 차이점은 다음과 같습니다.
람다 식에는 이름이 없습니다.
람다 식에는 Overloads 또는 Overrides와 같은 한정자가 있을 수 없습니다.
람다 식은 As 절을 사용하여 함수의 반환 형식을 지정하지 않습니다. 대신 람다 식의 본문이 평가되는 값에서 형식이 유추됩니다. 예를 들어 람다 식의 본문이 Where cust.City = "London"이면 반환 형식은 Boolean입니다.
함수의 본문은 문이 아니라 식이어야 합니다. 본문은 하위 프로시저에 대한 호출이 아니라 함수 프로시저에 대한 호출로 구성되어야 합니다.
Return 문이 없습니다. 함수가 반환하는 값은 함수 본문에 있는 식의 값입니다.
End Function 문이 없습니다.
모든 매개 변수에 지정된 데이터 형식이 있거나 모든 매개 변수가 유추되어야 합니다.
Optional 및 Paramarray 매개 변수가 허용되지 않습니다.
제네릭 매개 변수가 허용되지 않습니다.
이러한 제한 그리고 람다 식의 사용 방식으로 인해 주로 짧고 간단합니다.
예제
다음 예제에서는 간단한 람다 식을 만드는 두 가지 방법을 보여 줍니다. 첫 방법에서는 Dim을 사용하여 함수의 이름을 제공합니다. 함수를 호출하려면 매개 변수에 대한 값을 전달합니다.
Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))
또는 함수를 동시에 선언하고 실행할 수 있습니다.
Console.WriteLine((Function(num As Integer) num + 1)(5))
람다 식은 LINQ(통합 언어 쿼리)의 여러 쿼리 연산자의 기반이 되며 메서드 기반 쿼리에서 명시적으로 사용할 수 있습니다. 다음 예제에서는 일반적인 LINQ 쿼리와 이 쿼리를 메서드 형식으로 변환한 코드를 보여 줍니다.
Dim londonCusts = From cust In db.Customers
Where cust.City = "London"
Select cust
' This query is compiled to the following code:
Dim londonCusts = db.Customers _
.Where(Function(cust) cust.City = "London") _
.Select(Function(cust) cust)
쿼리 메서드에 대한 자세한 내용은 쿼리(Visual Basic)를 참조하십시오. 표준 쿼리 연산자에 대한 자세한 내용은 표준 쿼리 연산자 개요를 참조하십시오.