Espressioni Lambda multi-linea e Statement Lambda

Le espressioni lambda erano state introdotte già nella versione 2008 di Visual Basic, per cui non sono una novità assoluta. Tuttavia, nella versione 2010 sono state ulteriormente potenziate.

Infatti, in precedenza, nelle espressioni lambda poteva essere indicato il codice da eseguire come funzione (Function), quindi con il ritorno di un valore. Ora non è più così: nelle espressioni lambda possiamo inserire anche delle routine (Sub), senza quindi dover necessariamente richiedere un valore di ritorno.

Completa il quadro l’abolizione del carattere di continuazione di linea, come abbiamo già visto in questo articolo, permettendo così di sviluppare l’istruzione su più righe, ma mantenendo una buona leggibilità del codice. Vediamo alcuni esempi.

Innanzi tutto vediamo la sintassi che era ammessa da Visual Basic 2008 (tuttora utilizzabile):

Visual Basic
  1.     ' sintassi con VB 2008
  2.     Dim processi = _
  3.         Process.GetProcesses.Where( _
  4.         Function(proc) proc.ProcessName.StartsWith("F"))

 

Questo codice legge il nome di tutti i processi in esecuzione sul computer che iniziano con la lettera "F" e li inserisce nella variabile processi.

In Visual Basic 2010 possiamo scrivere un’istruzione molto più articolata:

Visual Basic
  1.     ' sintassi con VB 2010
  2.     Dim processi = Process.GetProcesses.Where(
  3.     Function(p)
  4.       Try
  5.         Return p.ProcessName.
  6.                 StartsWith("F")
  7.       Catch ex As Win32Exception
  8.         ' qui si inserisce la gestione
  9.         ' dell'eccezione
  10.         Return False
  11.       End Try
  12.     End Function)

 

Come potete vedere, non solo l’istruzione si sviluppa in più righe senza l’uso del carattere di continuazione, ma addirittura è possibile inserire al suo interno un blocco TryCatchEnd Try come in un qualsiasi metodo classico.

L’ultima cosa che dobbiamo ancora vedere è come leggere le stringhe inserite nella variabile processi. Possiamo farlo in due modi, con il metodo classico o con una Statement Lambda:

Visual Basic
  1.     ' scorrimento classico dell'elenco
  2.     processi.ToList.ForEach(Sub(proc) MessageBox.Show(proc.ProcessName))

 

Con questa istruzione, ad ogni ciclo viene visualizzato un messaggio sullo schermo con il nome del processo.

Nella nuova sintassi, anche questa volta possiamo sviluppare l’istruzione su più righe, con un blocco di istruzioni e con una leggibilità che finora non era mai stata possibile (ElencoProcessi è un controllo di tipo TextBox):

Visual Basic
  1.     ' statement lambda per lo scorrimento
  2.     ' degli elementi
  3.     processi.ToList.ForEach(
  4.     Sub(proc)
  5.       Form1.ElencoProcessi.Text &= "Nome: "
  6.       Form1.ElencoProcessi.Text &= proc.ProcessName
  7.       Form1.ElencoProcessi.Text &= System.Environment.NewLine
  8.     End Sub)

Pubblicato il 5 giugno 2011 su Novità. Aggiungi ai preferiti il collegamento . Lascia un commento.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: