Syntaxis :: trefwoord :: verzamelen

SYNTAX :: Trefwoord :: Verzamel Perl-klasse
Download nu

Syntaxis :: trefwoord :: verzamelen Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Arthur Axel Schmidt
  • Uitgever website:
  • http://search.cpan.org/~frew/

Syntaxis :: trefwoord :: verzamelen Tags


Syntaxis :: trefwoord :: verzamelen Beschrijving

Syntaxis :: Trefwoord :: Verzamel Perl-klasse PerL 6 biedt een nieuwe besturingsstructuur - verzamelen - waarmee lijsten procedureel kunnen worden geconstrueerd, zonder de behoefte aan 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 Retourneer het aantal elementen dat het duurde. Syntaxis :: Keyword :: verzamelen is een PERL-module die deze controlestructuur implementeert. Als het einde van de uitvoering van het blok, retourneert de verzamel lijst van waarden die zijn opgeslagen in de array (in een lijstcontext) of een verwijzing naar de reeks (in een scalaire context). Voorbeeld, in plaats van te schrijven: Print Do {My @wanted; terwijl (mijn $ regel =) {push @wanted, $ lijn als $ lijn = ~ / \ d /; Push @Wanted, - $ LIJN ALS SEY_OWER_CONDITION ($ LIJN); } duw @Wanted, 'EOF'; join q {,}, @wanted; }; in plaats daarvan kunnen we schrijven: afdrukken join q {,}, verzamel {terwijl (mijn $ line =) {neem $ lijn als $ lijn = ~ / \ d /; Neem - $ regel als sommige_other_condition ($ lijn); } Neem 'EOF'; } En in plaats van: mijn $ Text = do {mijn $ string; terwijl () {volgende if / ^ # | ^ \ s * $ /; Laatste if / ^ __ __ \ n $ /; $ string. = $ _; } $ string; }; we kunnen schrijven: mijn $ Text = join q {}, verzamel {while () {volgende if / ^ # | ^ \ s * $ /; Laatste if / ^ __ __ \ n $ /; neem $ _; }}; Er is ook een derde functie - verzameld - die een verwijzing retourneert naar de impliciete array die wordt verzameld. Dit is handig voor het hanteren van standaardinstellingen: mijn @odds = verzamelen {voor @DATA {neem $ _ als $ _% 2; Neem to_num ($ _) als / $ /; } Neem (1,3,5,7, 9) tenzij verzameld; } Merk op dat - zoals het bovenstaande voorbeeld impliceert - de verzamelde functie retourneert een speciale PERL 5-array-referentie die fungeert als een PERL 6-array-referentie in Boolean, numerieke en stringcontents.it 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 moeten voorleggen: mijn @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 (@) {My $ CoderEf = Shift; mijn @list = @ {shift @_}; Terugkomst verzamelen {Neem $ CODEERF -> ($ _) voor (@list)}; } SUB GREP (@) {MY $ CODEERF = SHIFTE; mijn @list = @ {shift @_}; Terugkomst verzamelen {neem $ _ als $ CODEEREF -> ($ _) voor @list}; } 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>; terwijl (1) {if (gedefinieerd $ een gedefinieerde $ b) {if ($ a eq $ b) {laatste} # duplicaat betekent einde van lijst Elsif ($ a lt $ b) {neem $ A; $ A = <$ fh_a>; } anders {neem $ B; $ b = <$ fh_b>; }} Elsif (gedefinieerde $ A) {neem $ A; $ A = <$ fh_a>; } Elsif (gedefinieerd $ b) {neem $ B; $ b = <$ fh_b>; } else {LAATSTE}}} Synopsis-gebruik Syntaxis :: Keyword :: verzamelen; Mijn @list = verzamel {# Probeer oneven nummers en oneven getalnamen te extraheren ... voor (@DATA) {@ (/ (One | Three | Five | Seven | Nine) $ /) {Neem QQ {$ _ ' }} Elsif (/ ^ \ D + $ / $ _% 2) {neem $ _}} # maar gebruik de standaardset als er geen van beide is ... neem @Defaults tenzij ze zijn verzameld; } Vereisten: · Perl


Syntaxis :: trefwoord :: verzamelen Gerelateerde software