Explication
Les fonctions anonymes, ou fonctions "lambda", ont vu le jour
au sein du langage Lisp, l'un des tout premiers langages
de programmation, et ont depuis fait leur chemin au sein de
la plupart des langages courants, comme JavaScript, PHP, Java,
C#, Perl ou Python.
Cette appellation décrit une syntaxe de programmation permettant
des approches intéressantes; les fonctions anonymes, simplement,
sont de petites fonctions (généralement une seule ligne) créées
à la volée, ou de manière plus pratique, quand le besoin s'en
fait sentir. Elles n'ont de fait pas de nom, d'où leur appellation.
L'existence
d'une fonction anonyme dépend de données inconnues au moment
de l'écriture, mais qui seront créées par le programme lors
de l'exécution. Utilisée le plus souvent dès sa création,
une telle fonction peut également être stockée dans une variable
pour être utilisée plus loin dans le programme..
Ce type de fonction se révèle pratique lorsque l'on a besoin
d'une fonction simple mais qui ne sera pas utilisée
une deuxième fois dans le programme. Ces fonctions sont principalement
créées pour interagir avec des fonctions qui attendent d'autres
fonctions en argument. Cela permet souvent de simplifier et
de condenser le code.
Application
Comme nous l'avons écrit, la plupart des langages modernes
implémentent un mécanisme de fonctions anonymes, au point
que certains les emploient sans même s'en rendre compte.
JavaScript, par exemple, autorise la création de fonction
anonyme de manière très simple. Ainsi, cet appel classique
:
var c = 0;
var o = document.getElementByTagName('clique');
for (var i=0; i<o.length; i++) {
{
o[i].onclick = alerte();
}
function alerte()
{
c++;
alert(c + " clicks!");
}
Peut se résumer, en utilisant une fonction anonyme, à :
var c = 0;
var o = document.getElementByTagName('clique');
for (var i=0; i<o.length; I++) {
{
o[i].onclick = function() { c++; alert(c + " clicks!"):
};
}
Les fonctions anonymes sont d'ailleurs fréquemment utilisées
au sein de bookmarlets.
|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
PHP, de son côté, propose directement un constructeur de
fonctions anonymes, create_function().
Elle prend deux chaînes en arguments : la première indique
la liste de paramètres de la fonction à créer, l'autre présente
la fonction elle-même.
$temp = create_function('$x, $y', '$x++;
$y--; return $x*$y;');
L'appel de la fonction est ensuite simple :
$res = temp(5, 3);
En Perl, les fonctions anonymes se font par référence
:
my $temp = sub {
my $message = shift;
print $message;
} ;
$temp->('Youpi!');
C# 2.0 aborde également les fonctions anonymes (ou
méthodes anonymes) de manière très directe,
via les delegates :
public delegate void Print (string s);
Print delegateVariable = delegate(string maChaine) { MessageBox.Show(maChaine);
};
Enfin, en Java, on parle plus facilement de classe anonyme
que de fonction anonyme, les fonctions sans nom étant
interdites...
|