Function – výraz (Visual Basic)
Deklaruje parametry a kód, které definují výraz lambda funkce.
Syntaxe
Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] )
[ statements ]
End Function
Součástky
Pojem | definice |
---|---|
parameterlist |
Nepovinné. Seznam názvů místních proměnných, které představují parametry tohoto postupu. Závorky musí být přítomné, i když je seznam prázdný. Viz seznam parametrů. |
expression |
Povinný: Jeden výraz. Typ výrazu je návratový typ funkce. |
statements |
Povinný: Seznam příkazů, které vrací hodnotu pomocí Return příkazu. (Viz Return – příkaz.) Typ vrácené hodnoty je návratový typ funkce. |
Poznámky
Výraz lambda je funkce bez názvu, který vypočítá a vrátí hodnotu. Výraz lambda můžete použít všude, kde můžete použít typ delegáta, s výjimkou argumentu RemoveHandler
pro . Další informace o delegátech a použití výrazů lambda s delegáty naleznete v tématu Příkaz delegáta a Uvolněný převod delegáta.
Syntaxe výrazu lambda
Syntaxe výrazu lambda se podobá syntaxi standardní funkce. Rozdíly jsou následující:
Výraz lambda nemá název.
Výrazy lambda nemohou obsahovat modifikátory, například
Overloads
neboOverrides
.Výrazy lambda nepoužívají
As
klauzuli k určení návratového typu funkce. Místo toho je typ odvozen z hodnoty, na kterou se tělo výrazu lambda s jedním řádkem vyhodnotí nebo návratovou hodnotu výrazu lambda s více řádky. Pokud je například text výrazuWhere cust.City = "London"
lambda s jedním řádkem , jeho návratový typ jeBoolean
.Text výrazu lambda s jedním řádkem musí být výraz, nikoli příkaz. Tělo se může skládat z volání procedury funkce, ale ne volání dílčí procedury.
Buď všechny parametry musí mít zadané datové typy, nebo všechny musí být odvozeny.
Volitelné parametry a parametry Paramarray nejsou povoleny.
Obecné parametry nejsou povoleny.
Příklad 1
Následující příklady ukazují dva způsoby vytvoření jednoduchých výrazů lambda. První použije Dim
k zadání názvu funkce. Pokud chcete volat funkci, odešlete hodnotu parametru.
Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))
Příklad 2
Alternativně můžete funkci deklarovat a spouštět současně.
Console.WriteLine((Function(num As Integer) num + 1)(5))
Příklad 3
Následuje příklad výrazu lambda, který zvýší jeho argument a vrátí hodnotu. Příklad ukazuje syntaxi jednořádkového i víceřádkového výrazu lambda pro funkci. Další příklady najdete v tématu Výrazy lambda.
Dim increment1 = Function(x) x + 1
Dim increment2 = Function(x)
Return x + 2
End Function
' Write the value 2.
Console.WriteLine(increment1(1))
' Write the value 4.
Console.WriteLine(increment2(2))
Příklad 4
Výrazy lambda tvoří základ mnoha operátorů dotazu v linQ (Language-Integrated Query) a lze je použít explicitně v dotazech založených na metodách. Následující příklad ukazuje typický dotaz LINQ následovaný překladem dotazu do formátu metody.
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)
Další informace o metodách dotazů najdete v tématu Dotazy. Další informace o standardních operátorech dotazů naleznete v tématu Přehled operátorů standardních dotazů.