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);
# Bilde Objekte auf Werte ab
@arr = $lst->map(sub {
my $obj = shift;
...
return (...);
};
# Über alle Objekte iterieren
$lst->loop($ref,sub {
my ($ref,$obj,$i) = @_
...
});
DESCRIPTION
Ein Objekt der Klasse speichert eine Ansammlung von (beliebigen) Objekten. Mit den Methoden der Klasse kann auf dieser Ansammlung 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 ($ref,$obj,$i) = @_;
my ($sumS,$strS) = @$ref;
...
$$sumS += $x;
...
if ($i) {
$$strS .= "\n";
}
$$strS .= $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.
loop() - Iteriere über allen Elementen
Synopsis
$lst->loop($ref,$sub);
Arguments
- $ref
-
Referenz auf Struktur, die von der Schleife manipuliert wird.
- $sub
-
Subroutine, die für jedes Objekt aufgerufen wird. Die Subroutine hat die Signatur
sub { my ($ref,$obj,$i) = @_; ... }
Description
Rufe die Subroutine $sub für jedes Element der Liste auf. Innerhalb der Subroutine kann die Struktur, auf die $ref verweist, manipuliert werden.
map() - Bilde Objekte auf Werte ab
Synopsis
@arr | $arr = $lst->map($sub);
Arguments
- $sub
-
Subroutine, die für jedes Objekt eine Liste von Werten liefert. Die Subroutine hat die Signatur
sub { my $obj = shift; ... 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.173
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2020 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.