Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Nouveautés VB 2008 [VB 9.0] : Expressions Lambda

Après ce petit WE bien chargé, je reprends le clavier afin de poursuivre mes posts précédents relatifs à la découvertes des nouveautés du langage Visual Basic 2008 (VB 9.0).  Découvrons ce jour, les Expressions Lambda !

  • Qu'est-ce qu'une Expression Lambda ?

Une expression lambda est une fonction ne possédant pas de nom permettant de calculer et retourner une valeur unique.

Les expressions lambda peuvent être utilisées chaque fois qu'un type délégué est valide.

Celles-ci semblent avoir été introduites dans le but principal d'appuyer la gestion des requêtes (effectuées au travers des méthodes d'extension)... En clair pour LINQ.

Effectivement, Le compilateur crée des expressions lambda afin de capturer les calculs définis dans des méthodes de requête fondamentales, telles que Where, Select, Order By, ...

A noter q'une expression lambda partage le contexte de la méthode dans laquelle elle est définie ! (ex : accès aux variables, aux membres, aux fonctions, Me, paramètres et variables locales dans la méthode contenante)

  • Exploitation des Expressions Lambda

Comme à mon habitude, passons au pragmatique avec la découverte des Expressions Lambda par la pratique.  Observez à cet effet le code suivant :

' Déclaration d'une Expression Lambda : Function
Dim myExprLamda = Function(myNum As Integer) myNum + 1


Console.WriteLine(myExprLamda(2))
Console.WriteLine(myExprLamda(5))

Cet exemple, relativement simple, est une Expression Lambda incrémentant son argument, soit dans ce cas-ci myNum !

Note : En C#, une expression lambda s'écrit comme suit : X => X*X et se lit "X conduit à X fois X".  ce qui dans notre cas donnerait "Function(myNum As Integer) conduit à myNum + 1"

Comme vous le remarquez, par facilité, j'ai volontairement assigné cette Expression Lambda à une variable afin de pouvoir l'utiliser plusieurs fois de suite sans devoir la déclarer à nouveau.

Ce code montre également une dissociation entre la déclaration et l'exécution de notre fonction, hors rien ne vous empêche de les effectuer simultanément comme suit :

Console.WriteLine((Function(myNum As Integer) myNum + 1)(3))

Maintenat que vous avez compris la notion d'Expression Lambda, voyons comme nous pouvons pousser leur exploitation, effectivement, rien ne vous empêche de les utiliser comme suit :

image

Ce dernier exemple montre l'exploitation de l'Expression Lambda de type Booléenne en qualité d'argument pour notre méthode ExploitationExprLambdaParam.

image 

Dans ce cas-ci, notre Expression Lambda effectuera une test booléen à l'argument de type entier afin de le retourner à notre méthode.

A noter toutefois que les paramètres génériques ne sont pas autorisés.

  • Les Expressions Lambda, LINQ et les requêtes

Bon, avant tout, petit rappel pour ceux qui n'auraient pas encore eu une introduction à LINQ...

"LINQ = Language INtegrated Query"

LINQ est ...
   Une innovation de VS2008 et .NET 3.5 
   Un changement radical dans le travail de données

LINQ, ses Avantages ...
   Simplifie l’écriture des requêtes
   Unifie la syntaxe de requêtes pour tout type de source de données
   Renforce la connexion entre les données relationnelles
        et le monde de l’OO
   Accélère les développements
   Gestion des erreurs à la compilation
   IntelliSense et debugging

http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx

Comme expliqué en haut de ce post (article), les Expressions lambda son largement exploitées dans le cadre des Requêtes d'Expressions ainsi que LINQ. 

Observez le code suivant :

image

Qui est compilé dans le code suivant (vue approximativement sortie de Reflector) :

image

Vous remarquerez effectivement l'exploitation des Expressions Lambda à de nombreuses reprises.

  • Les expressions Lambda et les Délégués Non Stricts

Vous vous souvenez très certainement de mon post relatif aux délégués non stricts.  Imaginez ce que celà peut donner lorsque vous mélangez les Expressions Lambda et cette notion, voici le genre de résultats auquel vous pourrez être confronté :

image 

En sachant que nous obtenons le message d'erreur suivant sur la dernière ligne :

image

Sur base de ceci, je ne puis que vous encourager à creuser plus en profondeur les Expressions Lambda.  Voici qqs sources :

J'écoutais cet artiste durant l'écriture de ce post et franchement j'aime beaucoup :

free music

 

Bon Code

R.
Member of WygTeam
www.wygwam.com

Publié lundi 4 février 2008 07:27 par redo
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01

- SharePoint Online: Script PowerShell pour supprimer une colonne dans tous les sites d’une collection par Blog Technique de Romelard Fabrice le 11-27-2018, 18:01