Kurso de Raku / Funkcia, samtempa, reaktiva kaj reta programado / Funkcia programado / Lambdoj kaj fermaĵoj
Lambdoj
Lambdo estas funkcio sen nomo. Vi jam renkontis du manierojn
skribi unu. La unua estas la pinta bloko, kiu
listigas siajn parametrojn post la sago ->:
my &square = -> $x { $x * $x };
say square(7); # 49La dua estas la formo Whatever, kie *
reprezentas la argumenton kaj la esprimo ĉirkaŭ ĝi fariĝas unu-argumenta
funkcio:
my &square = * ** 2;
say square(7); # 49Ambaŭ kreas la saman specon de aĵo: pecon de kodo, kiun vi povas konservi, transdoni kaj voki. Lambdoj brilas kiel argumentoj al altordaj funkcioj, kie nomi ilin nur malhelpus:
say (1..5).map(-> $n { $n * $n }); # (1 4 9 16 25)
say (1..5).map(* ** 2); # (1 4 9 16 25)La pinta formo estas pli klara, kiam la korpo estas pli longa aŭ prenas plurajn parametrojn; la formo Whatever estas mirinde mallonga por simplaj esprimoj. Ili estas du literumoj de la sama ideo: funkcio sen nomo.
Praktiko
Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.
Kursa navigado
← Lambdoj kaj fermaĵoj | Kvizo — Lambdoj →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.