Je souhaite appliquer une fonction à chaque élément d'une liste et stocker des résultats similaires à map(function, list)
en python.Comment puis-je appliquer une fonction à une liste en utilisant map?
a essayé de passer une fonction à la carte, mais nous avons eu cette erreur:
perl -le 'my $s = sub {}; @r = map $s 0..9'
panic: ck_grep at -e line 1.
Quelle est la bonne façon de le faire?
Belle réponse, notez que dans le bloc de carte, contrairement à la plupart des autres blocs, vous pouvez _not_ installer pragma lexicales ou faire d'autres actions de temps de compilation ('utilisation ... '/' non ... '). –
Vous pouvez utiliser * use * et * no * dans * map BLOCK LIST * formes de * map *, pas dans * map EXPR LIST * forms, c'est juste que si vous les utilisez vous devrez peut-être désambiguïser le bloc d'une expression avec un leader. Alternativement, vous pouvez utiliser un * do BLOCK * comme expression, et qui peut contenir * no * et * use *. utiliser strict; mon @a = 1..10; mon @b = carte {; pas de «vars» stricts; $ x = $ _ + 1; $ x} @a; my @c = map {do {pas de 'vars' strict; $ x = $ _ + 1; $ x}} @a; – MkV
Il convient également de noter que * $ _ * dans la boucle est un alias pour les éléments du tableau, donc la modifier modifie le tableau source, ce qui n'est pas recommandé pour effacer le code. – MkV