Megosztás a következőn keresztül:


Útmutató: Lambda-kifejezés létrehozása (Visual Basic)

A lambda kifejezés olyan függvény vagy alrutin, amely nem rendelkezik névvel. A lambda kifejezés bárhol használható, ahol egy delegált típus érvényes.

Egysoros lambda függvény létrehozása

  1. Minden olyan helyzetben, amikor egy delegálttípus használható, írja be a kulcsszót Functionaz alábbi példához hasonlóan:

    Dim add1 = Function

  2. Zárójelben, közvetlenül a Function után, írja be a függvény paramétereit. Figyeljen oda, hogy nem ad meg nevet a Function után.

    Dim add1 = Function (num As Integer)

  3. A paraméterlistát követve írjon be egyetlen kifejezést a függvény törzseként. A kifejezés által kiértékelt érték a függvény által visszaadott érték. A visszatérési típus megadásához nem használ As záradékot.

    Dim add1 = Function(num As Integer) num + 1
    

    A lambda kifejezést egy egész szám argumentumának átadásával hívhatja meg.

    ' The following line prints 6.
    Console.WriteLine(add1(5))
    
  4. Másik lehetőségként ugyanezt az eredményt az alábbi példa is megvalósítja:

    Console.WriteLine((Function(num As Integer) num + 1)(5))
    

Egysoros lambda kifejezés alrutin létrehozása

  1. Minden olyan helyzetben, ahol delegálási típus használható, írja be a kulcsszót Subaz alábbi példában látható módon.

    Dim add1 = Sub

  2. Zárójelben közvetlenül utána Sub írja be az alprogram paramétereit. Figyeljen oda, hogy nem ad meg nevet a Sub után.

    Dim add1 = Sub (msg As String)

  3. A paraméterlistát követve írjon be egyetlen utasítást a subroutine törzseként.

    Dim writeMessage = Sub(msg As String) Console.WriteLine(msg)
    

    A lambda kifejezést sztringargumentum megadásával hívhatja meg.

    ' The following line prints "Hello".
    writeMessage("Hello")
    

Többsoros lambda kifejezésfüggvény létrehozása

  1. Minden olyan helyzetben, ahol delegálási típus használható, írja be a kulcsszót Functionaz alábbi példában látható módon.

    Dim add1 = Function

  2. Zárójelben, közvetlenül a Function után, írja be a függvény paramétereit. Figyeljen oda, hogy nem ad meg nevet a Function után.

    Dim add1 = Function (index As Integer)

  3. Nyomja le az ENTER billentyűt. Az End Function utasítás automatikusan hozzáadásra kerül.

  4. A függvény törzsében adja hozzá a következő kódot egy kifejezés létrehozásához és az érték visszaadásához. A visszatérési típus megadásához nem használ As záradékot.

    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
    

    A lambda kifejezést egy egész szám argumentumának átadásával hívhatja meg.

    Dim sortColumn = getSortColumn(0)
    

Többsoros lambda kifejezés alrutin létrehozása

  1. Minden olyan helyzetben, ahol delegálttípus használható, írja be a kulcsszót Subaz alábbi példában látható módon:

    Dim add1 = Sub

  2. Zárójelben közvetlenül utána Sub írja be az alprogram paramétereit. Figyeljen oda, hogy nem ad meg nevet a Sub után.

    Dim add1 = Sub (msg As String)

  3. Nyomja le az ENTER billentyűt. Az End Sub utasítás automatikusan hozzáadásra kerül.

  4. A függvény törzsén belül adja hozzá a következő kódot, amelyet az alrutin meghívásakor végre kell hajtani.

    Dim writeToLog = Sub(msg As String)
                         Dim log As New EventLog()
                         log.Source = "Application"
                         log.WriteEntry(msg)
                         log.Close()
                     End Sub
    

    A lambda kifejezést sztringargumentum megadásával hívhatja meg.

    writeToLog("Application started.")
    

példa

A lambda kifejezések gyakori használata egy olyan függvény definiálása, amely átadható argumentumként egy olyan paraméterhez, amelynek típusa .Delegate Az alábbi példában a metódus a GetProcesses helyi számítógépen futó folyamatok tömbét adja vissza. A Where osztály Enumerable metódusa egy Boolean delegáltat igényel argumentumként. A példában szereplő lambda kifejezést erre a célra használja a rendszer. Minden olyan folyamathoz ad vissza True, amelynek csak egy szála van, és ezeket a filteredList-ben jelölik ki.

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

Az előző példa egyenértékű a következő kóddal, amely Language-Integrated Query (LINQ) szintaxisban van megírva:

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

Lásd még