람다 식은 이름이 없는 함수 또는 서브루틴입니다. 대리자 형식이 유효한 곳마다 람다 식을 사용할 수 있습니다.
한 줄 람다 식 함수를 만들려면
대리자 형식을 사용할 수 있는 모든 상황에서 다음 예제와 같이 키워드
Function를 입력합니다.Dim add1 =FunctionFunction직후에 괄호 안에 함수의 매개 변수를 입력합니다. 이름을 지정하지 않은 것을 유의하세요Function.Dim add1 = Function(num As Integer)매개 변수 목록 다음에 함수의 본문으로 단일 식을 입력합니다. 식이 계산하는 값은 함수에서 반환되는 값입니다. 절을
As사용하여 반환 형식을 지정하지 않습니다.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))
한 줄 람다 식 서브루틴을 만들려면
대리자 형식을 사용할 수 있는 모든 상황에서 다음 예제와 같이 키워드
Sub를 입력합니다.Dim add1 =Sub괄호
Sub안에 서브루틴의 매개 변수를 입력합니다. 이름을 지정하지 않은 것을 유의하세요Sub.Dim add1 = Sub(msg As String)매개 변수 목록 다음에 단일 문을 서브루틴의 본문으로 입력합니다.
Dim writeMessage = Sub(msg As String) Console.WriteLine(msg)문자열 인수를 전달하여 람다 식을 호출합니다.
' The following line prints "Hello". writeMessage("Hello")
여러 줄 람다 식 함수를 만들려면
대리자 형식을 사용할 수 있는 모든 상황에서 다음 예제와 같이 키워드
Function를 입력합니다.Dim add1 =FunctionFunction직후에 괄호 안에 함수의 매개 변수를 입력합니다. 이름을 지정하지 않은 것을 유의하세요Function.Dim add1 = Function(index As Integer)ENTER 키를 누릅니다.
End Function문이 자동으로 추가됩니다.함수 본문 내에서 다음 코드를 추가하여 식을 만들고 값을 반환합니다. 절을
As사용하여 반환 형식을 지정하지 않습니다.Dim getSortColumn = Function(index As Integer) Select Case index Case 0 Return "FirstName" Case 1 Return "LastName" Case 2 Return "CompanyName" Case Else Return "LastName" End Select End Function정수 인수를 전달하여 람다 식을 호출합니다.
Dim sortColumn = getSortColumn(0)
여러 줄 람다 식 서브루틴을 만들려면
대리자 형식을 사용할 수 있는 모든 상황에서 다음 예제와 같이 키워드
Sub를 입력합니다.Dim add1 =Sub괄호
Sub안에 서브루틴의 매개 변수를 입력합니다. 이름을 지정하지 않은 것을 유의하세요Sub.Dim add1 = Sub(msg As String)ENTER 키를 누릅니다.
End Sub문이 자동으로 추가됩니다.함수 본문 내에서 서브루틴이 호출될 때 실행할 다음 코드를 추가합니다.
Dim writeToLog = Sub(msg As String) Dim log As New EventLog() log.Source = "Application" log.WriteEntry(msg) log.Close() End Sub문자열 인수를 전달하여 람다 식을 호출합니다.
writeToLog("Application started.")
예시
람다 식의 일반적인 용도는 Delegate 형식의 매개 변수에 대한 인수로 전달될 수 있는 함수를 정의하는 것입니다. 다음 예제에서 메서드는 GetProcesses 로컬 컴퓨터에서 실행 중인 프로세스의 배열을 반환합니다.
Where 클래스의 Enumerable 메서드에는 Boolean 대리자가 필요합니다. 예제의 람다 식은 해당 용도로 사용됩니다. 스레드가 하나만 있고 해당 스레드가 선택된 각 프로세스에 True대해 반환 filteredList 됩니다.
Sub Main()
' Create an array of running processes.
Dim procList As Process() = Diagnostics.Process.GetProcesses
' Return the processes that have one thread. Notice that the type
' of the parameter does not have to be explicitly stated.
Dim filteredList = procList.Where(Function(p) p.Threads.Count = 1)
' Display the name of each selected process.
For Each proc In filteredList
MsgBox(proc.ProcessName)
Next
End Sub
이전 예제는 LINQ(Language-Integrated Query) 구문으로 작성된 다음 코드와 동일합니다.
Sub Main()
Dim filteredQuery = From proc In Diagnostics.Process.GetProcesses
Where proc.Threads.Count = 1
Select proc
For Each proc In filteredQuery
MsgBox(proc.ProcessName)
Next
End Sub
참고하십시오
.NET