Lambda expressions

In programmazione informatica, una funzione anonima o funzione lambda è una funzione o una subroutine definita, e possibilmente chiamata, senza essere legata ad un identificatore (da qui, appunto, funzione anonima ). Le funzioni lambda sono una forma di funzione nidificata, che consente l’accesso alle variabili nella portata della funzione contenitrice (variabili non locali).

Forniscono un scorciatoia rapida per applicare funzioni senza necessità di definire un nuovo metodo, o addirittura una nuova classe. Tuttavia, se un’espressione viene utilizzata in maniera ricorrente, è comunque preferibile costruire un metodo che possa essere chiamato ogni volta, senza dover ripete, ogni volta che risulta necessario, la definizione della funzione lambda.

Possono essere facilmente implementate sia in C#, sia in VB.NET. Vengono utilizzate spesso per la creazione di nuovi oggetti, ad esempio durante la gestione di un database, sopratutto se non relazionale, ma possono essere utilizzati anche per semplici trasformazioni. Alcuni esempi di questi utilizzi nei due linguaggi precedentemente citati sono i seguenti:

C#

// definizione di una lista di oggetti
List<Customer> custList = new List<Customer>
    {new Customer()
          { CustomerId = 1,
            FirstName="Bilbo",
            LastName = "Baggins",
            EmailAddress = "bb@hob.me"},
    new Customer()
          { CustomerId = 2,
            FirstName="Frodo",
            LastName = "Baggins",
            EmailAddress = "fb@hob.me"},
    new Customer()
          { CustomerId = 3,
            FirstName="Samwise",
            LastName = "Gamgee",
            EmailAddress = "sg@hob.me"},
    new Customer()
          { CustomerId = 4,
            FirstName="Rosie",
            LastName = "Cotton",
            EmailAddress = "rc@hob.me"}};
// definizione di una espressione lambda che opera sulla lista
var foundCustomer = custList.FirstOrDefault(c =>
                        c.CustomerId == 4);


// definizione di una espressione lambda che applica una funzione ad un oggetto (in questo caso la somma di due oggetti)

int add = (x, y) => { return x + y };
Console.WriteLine("{0}",add(1,2));

VB.NET

// definizione di una lista di oggetti
Dim custList As List(Of Customer) = New List(Of Customer) From {
    New Customer() With {
        .CustomerId = 1,
        .FirstName = "Bilbo",
        .LastName = "Baggins",
        .EmailAddress = "bb@hob.me"
    },
    New Customer() With {
        .CustomerId = 2,
        .FirstName = "Frodo",
        .LastName = "Baggins",
        .EmailAddress = "fb@hob.me"
    },
    New Customer() With {
        .CustomerId = 3,
        .FirstName = "Samwise",
        .LastName = "Gamgee",
        .EmailAddress = "sg@hob.me"
    },
    New Customer() With {
        .CustomerId = 4,
        .FirstName = "Rosie",
        .LastName = "Cotton",
        .EmailAddress = "rc@hob.me"
    }
}
// definizione di una espressione lambda che opera sulla lista
Dim foundCustomer = custList.FirstOrDefault(Function(c) c.CustomerId = 4)


// definizione di una espressione lambda che applica una funzione ad un oggetto (in questo caso la somma di due oggetti)

Dim add = Function(x, y)
             Return x + y
          End Function

Lascia un commento