NAME

Quiq::List - Liste von Objekten

BASE CLASS

Quiq::Hash

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

@objects

Array von Objekten.

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

$obj

Objekt

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.