Perl6 :: Versammlung.

Perl6 :: satsam ist ein Perl-Modul, das die Kontrollstruktur der Perl 6 'in Perl 5 implementiert.
Jetzt downloaden

Perl6 :: Versammlung. Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Damian Conway
  • Website des Verlags:
  • http://search.cpan.org/~dconway/

Perl6 :: Versammlung. Stichworte


Perl6 :: Versammlung. Beschreibung

Perl6 :: Gather ist ein Perl-Modul, das die Kontrollstruktur der Perl 6 'sammelt / annehmen / annehmen' in Perl 5. Perl6 :: sammeln ist ein Perl-Modul, das die Kontrollstruktur der Perl 6 'sammeln / annehmen' in Perl 5.synopsis verwenden, verwenden Sie Perl6 :: sammeln; @list = sammeln {# Versuchen Sie, ungerade Zahlen und ungerade Nummernamen zu extrahieren ... für (@Data) {if (/ (eins | drei | fünf | neun) $ /) {nimm qq {'$ _'}; } ELSIF (/ ^ D + $ / $ _% 2) {Nehmen; }} # Aber verwenden Sie jedoch das Standard-Set, wenn es nicht entweder ist ... Nehmen Sie @Defaults, sofern nicht mehr gesammelt; } BackgleSPerl 6 bietet eine neue Steuerstruktur - sammeln -, mit der Listen verfahrenstechnisch konstruiert werden können, ohne dass eine temporäre Variable erforderlich ist. Innerhalb des Blocks / der Schließung, der von einem Sammeln gesteuert wird, schiebt jeder Anruf, der die Argumentliste von Ruf an ein implizit erstelltes Array anrufen. Nehmen Sie die Anzahl der mitgenommenen Elemente zurück. Anstatt zu schreiben: # Perl 6 Code ... drucken {my @wanted; für -> $ line {Push @Wanted, $ Zeile, wenn $ line ~~ / d /; Push @wanted, - $ Zeile, wenn einige_Other_Condition ($ line); } Push @Wanted, 'EOF'; @gesucht; }; In Perl 6 können wir schreiben: # Perl 6 Code ... drucken sammeln {für -> $ line {nave $ line, wenn $ line ~~ / d /; Nehmen Sie - $ Zeile, wenn einige_Other_condition ($ line); } Nehmen Sie 'EOF'; } und anstelle von: $ text = do {my $ string; für {next if / ^ # | ^ s * $ /; Letzte, wenn / ^ __ __ n $ /; $ string. = $ _; } $ string; }; wir könnten schreiben: $ text = ~ sammeln {für {next if / ^ # | ^ s * $ /; Letzte, wenn / ^ __ __ n $ /; nehmen; }} Da das obige Beispiel impliziert, wenn das Nehmen ohne Argumente aufgerufen wird, dauert es das aktuelle Thema. Es gibt auch eine dritte Funktion - sammelt -, was einen Verweis auf das implizite Array zurückgibt, das auf das gesammelte implizite Array zurückgibt. Dies ist nützlich für die Handhabung von Standards: @odds = sammeln {für @Data {Nehmen, wenn $ _% 2; Nehmen Sie to_num ($ _), wenn / $ /; } 1,3,5,7,9 dauert, sofern nicht ergänzt; } Es ist auch praktisch, um das implizite Array mit einem einzelnen Prozess komplexer als durch ein einfaches sequentielles Drücken zu erstellen. Wenn wir beispielsweise eine Anzahl von nicht numerischen Elementen vorangehen müssten: @ODDS = sammeln {für @Data {Nehmen, wenn $ _% 2; Nehmen Sie to_num ($ _), wenn / $ /; } Unshift gesammelt, + GREP (/ / I, @Data); } Konzeptionell sammeln / nehmen ist die verallgemeinerte Form, aus der sowohl Karte als auch Grepr. Das heißt, wir könnten diese beiden Funktionen implementieren als: Unterkarten ($ transform ist Code, * @ List) {RETURN SAMPE {für @list {Take $ transform ($ _)}}}; } SUB GREP ($ ausgewählt ist Code | REGEL, * @ LISTE) {return sammeln {für @list {Nehmen Sie, wenn $ ausgewählt}}}}}}}}}}}}} Angenommen, wir wollten beispielsweise eine einzige sortierte Liste von Zeilen aus zwei sortierten Dateien generieren, jedoch nur bis zur ersten Zeile, die sie gemeinsam haben. Wir könnten die Zeilen so sammeln: mein @merged_diff = sammeln {mein $ a = <$ fh_a>; mein $ b = <$ fh_b>;; Loop {falls definiert alles $ A, $ B {Wenn $ a EQ $ B {Letzte} # Duplicate bedeutet Ende der Liste ELSIF $ A LT $ B {Nehmen Sie $ A; $ a = <$ fh_a>;; } else {nimm $ b; $ B = <$ fh_b>;; }} ELSIF definierte $ A {Nehmen Sie $ A; $ a = <$ fh_a>;; } ELSIF definierte $ b {nimm $ b; $ B = <$ fh_b>;; } else {Last}}}} Anforderungen: · Perl Anforderungen: · Perl.


Perl6 :: Versammlung. Zugehörige Software