Perl6 :: verzamelen

PERL6 :: verzamelen is een PERL-module die de PERL 6 '' verzamelen / nemen 'controlestructuur in PERL 5 implementeert.
Download nu

Perl6 :: verzamelen Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Damian Conway
  • Uitgever website:
  • http://search.cpan.org/~dconway/

Perl6 :: verzamelen Tags


Perl6 :: verzamelen Beschrijving

PERL6 :: verzamelen is een perl-module die de PERL 6 'verzamelt / neem' controlestructuur in PERL 5. Perl6 :: verzamelen is een perl-module die de PERL 6 'verzamelt / nemen' controlestructuur in PERL 5.SYNOPSIS gebruiken PERL6 :: verzamelen; @list = verzamelen {# Probeer oneven nummers en oneven getalnamen te extraheren ... voor (@data) {@ (/ (One | Three | Five | Nine) $ /) {Neem QQ {'$ _'}; } Elsif (/ ^ D + $ / $ _% 2) {nemen; }} # Gebruik de standaardset als er geen van beide is ... Neem @Defaults tenzij bijeenkomstig is; } Baseperl 6 biedt een nieuwe besturingsstructuur - verzamelen - waarmee lijsten procedureel moeten worden geconstrueerd, zonder de noodzaak van een tijdelijke variabele. Binnen het blok / sluiting gecontroleerd door een verzameling een oproep om duwt op de argumentenlijst van die oproep naar een impliciet gemaakte array. Take Retourneert het aantal elementen dat het duurde. Als het einde van de uitvoering van het blok, retourneert de samenkomst de lijst met waarden die zijn opgeslagen in de array (in een lijstcontext) of een verwijzing naar de array (in een scalaire context). In plaats van te schrijven: # Perl 6-code ... Print Do {My @wanted; Voor -> $ lijn {push @wanted, $ lijn als $ lijn ~~ / d /; Push @Wanted, - $ LIJN ALS SEY_OWER_CONDITION ($ LIJN); } duw @Wanted, 'EOF'; @gezocht; }; in Perl 6 kunnen we schrijven: # Perl 6-code ... afdrukken verzamelen {voor -> $ lijn {neem $ lijn als $ lijn ~~ / d /; Neem - $ regel als sommige_other_condition ($ regel); } Neem 'EOF'; } En in plaats van: $ Text = do {mijn $ string; voor {volgende if / ^ # | ^ s * $ /; Laatste IF / ^ __ __ N $ /; $ string. = $ _; } $ string; }; We kunnen schrijven: $ Text = ~ verzamelen {voor {volgende als / ^ # | ^ s * $ /; Laatste IF / ^ __ __ N $ /; nemen; }} Aangezien het bovenstaande voorbeeld impliceert, als het gebruik zonder argumenten wordt genoemd, heeft het het huidige onderwerp nodig. Er is ook een derde functie - die wordt verzameld - die een verwijzing retourneert naar de impliciete array die wordt verzameld. Dit is handig voor het verwerken van standaardwaarden: @odds = verzamelen {voor @Data {neem als $ _% 2; Neem to_num ($ _) als / $ /; } Neem 1,3,5,7, tenzij verzameld; } Het is ook handig voor het maken van de impliciete array door een proces complexer dan door eenvoudige sequentiële duwen. Als we bijvoorbeeld een telling van niet-numerieke items gebruiken: @odds = verzamelen {voor @DATA {neem als $ _% 2; Neem to_num ($ _) als / $ /; } Onschuiveld verzameld, + grep (/ / I, @DATA); } Conceptueel verzamelen / nemen is de gegeneraliseerde vorm van waaruit zowel kaart als grep afgeleid is. Dat wil zeggen, we zouden die twee functies kunnen implementeren als: subkaart ($ transformatie is code, * @ lijst) {return complet {voor @list {neem $ transformatie ($ _)}}; } SUB GREP ($ geselecteerd is Code | Regel, * @ lijst) {return complet {voor @list {neem wanneer $ geselecteerd}}} Een verzameling is ook een zeer handige manier van kortsluiting van de bouw van een lijst. Stel dat we bijvoorbeeld een enkele gesorteerde lijst met lijnen van twee gesorteerde bestanden wilden genereren, maar alleen tot de eerste regel die ze gemeen hebben. We kunnen de lijnen zoals deze verzamelen: mijn @MERGED_DIFF = verzamel {mijn $ A = <$ fh_a>; mijn $ b = <$ fh_b>; Loop {indien gedefinieerd alle $ A, $ B {if $ a eq $ b {laatste} # duplicaat betekent einde van de lijst elsif $ a lt $ b {neem $ A; $ A = <$ fh_a>; } anders {neem $ B; $ b = <$ fh_b>; }} Elsif gedefinieerd $ A {neem $ A; $ A = <$ fh_a>; } Elsif gedefinieerd $ B {neem $ B; $ b = <$ fh_b>; } else {laatste}}} Vereisten: · Perl-vereisten: · Perl


Perl6 :: verzamelen Gerelateerde software