Jak: vytvoření Lambda výraz (Visual Basic)
A lambda výraz je funkce nebo podprogram, který nemá název.Lambda výraz lze použít vždy, když je platný typ delegáta.
Vytvořte jeden řádek lambda výraz funkce
V každé situaci, kdy nelze použít typ delegáta, zadejte klíčové slovo Function, jako v následujícím příkladu:
Dim add1 = Function
V závorkách přímo za Function, zadejte parametry funkce.Všimněte si, že nezadáte název po Function.
Dim add1 = Function (num As Integer)
Po seznamu parametr zadejte jeden výraz jako hlavní funkce.Je vyhodnocen jako hodnota hodnotu vrácenou funkcí.Nepoužívejte As klauzule určit návratový typ.
Dim add1 = Function(num As Integer) num + 1
Můžete volání lambda výraz ve argument celého čísla.
' The following line prints 6. Console.WriteLine(add1(5))
Alternativně je dosaženo stejného výsledku v následujícím příkladu:
Console.WriteLine((Function(num As Integer) num + 1)(5))
Vytvořte podprogram jeden řádek lambda výraz
V každé situaci, kdy nelze použít typ delegáta, zadejte klíčové slovo Sub, jak ukazuje následující příklad.
Dim add1 = Sub
V závorkách přímo za Sub, zadejte parametry podprogramu.Všimněte si, že nezadáte název po Sub.
Dim add1 = Sub (msg As String)
Po seznamu parametr zadejte jako hlavní podprogram jednoho příkazu.
Dim writeMessage = Sub(msg As String) Console.WriteLine(msg)
Můžete volání lambda výraz ve řetězcový argument.
' The following line prints "Hello". writeMessage("Hello")
Vytvoření výrazu funkce multiline lambda
V každé situaci, kdy nelze použít typ delegáta, zadejte klíčové slovo Function, jak ukazuje následující příklad.
Dim add1 = Function
V závorkách přímo za Function, zadejte parametry funkce.Všimněte si, že nezadáte název po Function.
Dim add1 = Function (index As Integer)
Stiskněte klávesu ENTER.End Function Příkaz automaticky přidán.
V těle funkce přidejte následující kód pro vytváření výrazů a vrátí hodnotu.Nepoužívejte As klauzule určit návratový typ.
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
Můžete volání lambda výraz ve argument celého čísla.
Dim sortColumn = getSortColumn(0)
Vytvořte podprogram víceřádkové lambda výraz
V každé situaci, kdy nelze použít typ delegáta, zadejte klíčové slovo Sub, jak ukazuje následující příklad:
Dim add1 = Sub
V závorkách přímo za Sub, zadejte parametry podprogramu.Všimněte si, že nezadáte název po Sub.
Dim add1 = Sub(msg As String)
Stiskněte klávesu ENTER.End Sub Příkaz automaticky přidán.
V těle funkce přidejte následující kód spustit při podprogram.
Dim writeToLog = Sub(msg As String) Dim log As New EventLog() log.Source = "Application" log.WriteEntry(msg) log.Close() End Sub
Můžete volání lambda výraz ve řetězcový argument.
writeToLog("Application started.")
Příklad
Běžné použití lambda výrazů je definovat funkci, která lze předat jako argument pro parametr typu Delegate.V následujícím příkladu GetProcesses metoda vrátí matici procesy spuštěné v místním počítači.Where Metoda z Enumerable vyžaduje třídu Boolean delegovat jako svůj argument.Lambda výraz v příkladu je použit pro tento účel.Vrátí True pro každý proces, který má pouze jednoho podprocesu a ty, které jsou vybrány v 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
Předchozí příklad je ekvivalentní následující kód, který je zapsán v LINQ (Language-Integrated Query) syntaxe:
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
Viz také
Úkoly
Jak: postupy předat jiné procedury v jazyce Visual Basic
Referenční dokumentace
Koncepty
Úvod do jazyka Visual Basic LINQ