NAME
Quiq::List - Liste von Objekten
BASE CLASS
SYNOPSIS
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) = @_
...
});
DESCRIPTION
Ein Objekt der Klasse speichert eine Liste von Objekten. Mit den Methoden der Klasse kann auf dieser Liste operiert werden.
EXAMPLES
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;
});
METHODS
Klassenmethoden
new() - Konstruktor
Synopsis
$lst = $class->new;
$lst = $class->new(\@objects);
Arguments
Returns
Listen-Objekt
Description
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.
Objektmethoden
count() - Anzahl der Objekte
Synopsis
$n = $lst->count;
Returns
Nicht-negative ganze Zahl
Description
Liefere die Anzahl der in der Liste gespeichteren Objekte.
elements() - Liste der Objekte
Synopsis
@objects | $objectA = $lst->elements;
Returns
Liste von Objekten. Im Skalarkontext eine Referenz auf die Liste.
Description
Liefere das Array der in der Liste gespeicherten Objekte.
grep() - Wähle Objekte aus
Synopsis
@objects | $lstNew = $lst->grep(@args,$sub);
Arguments
- $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; }
Returns
Liste von Objekten. Im Skalarkontext eine Referenz auf eine (neu erzeugte) Liste mit diesen Objekten.
Description
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.
loop() - Iteriere über allen Elementen
Synopsis
$lst->loop(@args,$sub);
Arguments
- @args
-
Liste von Argumentn, z.B. Referenzen auf Strukturen, die von der Schleife manipuliert werden. Die Liste kann leer sein.
- $sub
-
Subroutine, die für jedes Objekt aufgerufen wird. Die Subroutine hat die Signatur
sub { my ($obj,$i,@refs) = @_; ... }
Description
Rufe die Subroutine $sub für jedes Element der Liste auf. Innerhalb der Subroutine können die Strukturen, auf die @args verweist, manipuliert werden.
map() - Bilde Objekte auf Werte ab
Synopsis
@arr | $arr = $lst->map(@args,$sub);
Arguments
- $sub
-
Subroutine, die für jedes Objekt eine Liste von Werten liefert. Die Subroutine hat die Signatur
sub { my ($obj,$i,@args) = @_; ... return @arr; }
Returns
Array aller Werte. Im Skalarkontext eine Referenz auf das Array.
Description
Rufe die Subroutine $sub für jedes Element der Liste auf, sammele alle gelieferten Werte ein und liefere das resultierende Array zurück.
push() - Füge Objekt am Ende der Liste hinzu
Synopsis
$obj = $lst->push($obj);
Arguments
Returns
Objekt
Description
Füge Objekt $obj am Ende der Liste hinzu und liefere eine Referenz auf dieses Objekt zurück.
VERSION
1.222
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2024 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.