Quiq::List - Liste von Objekten
Quiq::Hash
use Quiq::List; # Instantiiere Liste $lst = Quiq::List->new(\@objects); # Anzahl der enthaltenen Objekte $n = $lst->count; # Array der enthaltenen Objekte @obj = $lst->elements; # Füge Objekt zur Liste hinzu (am Ende) $obj = $lst->push($obj); # Wähle Objekte aus @objects = $lst->grep(sub { my ($obj,$i,@args) = @_; ... return $bool; }); # Bilde Objekte auf Werte ab @arr = $lst->map(@args,sub { my ($obj,$i,@args) = @_; ... return (...); }; # Iteriere über alle Objekte $lst->loop(@args,sub { my ($obj,$i,@args) = @_ ... });
Ein Objekt der Klasse speichert eine Liste von Objekten. Mit den Methoden der Klasse kann auf dieser Liste operiert werden.
Bilde die Summe über einem Attributwert:
use Hash::Util 'sum'; $sum = sum $lst->map(sub { my $obj = shift; ... return $x; });
Füge Werte zu einer Zeichenkette zusammen:
$str = join "\n",$lst->map(sub { my $obj = shift; ... return $s; });
Beides zusammen in einem Aufruf:
$lst->loop(\$sum,\$str,sub { my ($obj,$i,$sumS,$strS) = @_; ... $$sumS += $x; ... if ($i) { $$strS .= "\n"; } $$strS .= $s; });
oder als Closure
my ($sum,$str); $lst->loop(sub { my ($obj,$i) = @_; ... $sum += $x; ... if ($i) { $str .= "\n"; } $str .= $s; });
$lst = $class->new; $lst = $class->new(\@objects);
Array von Objekten.
Listen-Objekt
Instantiiere ein Objekt der Klasse und liefere eine Referenz auf dieses Objekt zurück. Der Aufruf ohne Argument ist äquivalent zu einem Aufruf mit einem leeren Array. Das Array und die Objekte werden nicht kopiert, es wird lediglich die übergebene Referenz gespeichert, d.h. alle Operationen finden auf den Originalstrukturen statt.
$n = $lst->count;
Nicht-negative ganze Zahl
Liefere die Anzahl der in der Liste gespeichteren Objekte.
@objects | $objectA = $lst->elements;
Liste von Objekten. Im Skalarkontext eine Referenz auf die Liste.
Liefere das Array der in der Liste gespeicherten Objekte.
@objects | $lstNew = $lst->grep(@args,$sub);
Subroutine, die für jedes Objekt prüft, ob es in der Ergebnismenge enthalten ist. Die Subroutine hat die Signatur
sub { my ($obj,$i,@args) = @_; ... return $bool; }
Liste von Objekten. Im Skalarkontext eine Referenz auf eine (neu erzeugte) Liste mit diesen Objekten.
Rufe die Subroutine $sub für jedes Element der Liste auf. Liefert die Subroutine wahr, wird das betreffende Objekt in die Ergebnismenge übernommen, sonst nicht.
$lst->loop(@args,$sub);
Liste von Argumentn, z.B. Referenzen auf Strukturen, die von der Schleife manipuliert werden. Die Liste kann leer sein.
Subroutine, die für jedes Objekt aufgerufen wird. Die Subroutine hat die Signatur
sub { my ($obj,$i,@refs) = @_; ... }
Rufe die Subroutine $sub für jedes Element der Liste auf. Innerhalb der Subroutine können die Strukturen, auf die @args verweist, manipuliert werden.
@arr | $arr = $lst->map(@args,$sub);
Subroutine, die für jedes Objekt eine Liste von Werten liefert. Die Subroutine hat die Signatur
sub { my ($obj,$i,@args) = @_; ... return @arr; }
Array aller Werte. Im Skalarkontext eine Referenz auf das Array.
Rufe die Subroutine $sub für jedes Element der Liste auf, sammele alle gelieferten Werte ein und liefere das resultierende Array zurück.
$obj = $lst->push($obj);
Objekt
Füge Objekt $obj am Ende der Liste hinzu und liefere eine Referenz auf dieses Objekt zurück.
1.204
Frank Seitz, http://fseitz.de/
Copyright (C) 2022 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Quiq, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Quiq
CPAN shell
perl -MCPAN -e shell install Quiq
For more information on module installation, please visit the detailed CPAN module installation guide.