The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Quiq::Table - Tabelle

BASE CLASS

Quiq::Hash

SYNOPSIS

    use Quiq::Table;
    
    # Objekt
    $tab = Quiq::Table->new(['a','b','c','d']);
    
    # Kolumnen
    
    $width = $tab->width;
    # 4
    
    @columns = $tab->columns;
    # ('a','b','c','d')
    
    $columnA = $tab->columns;
    # ['a','b','c','d']
    
    $i = $tab->columnIndex('c');
    # 2
    
    $i = $tab->columnIndex('z');
    # Exception
    
    # Zeilen
    
    @rows = $tab->rows;
    # ()
    
    $rowA = $tab->rows;
    # []
    
    $count = $tab->count;
    # 0
    
    $tab->push([1,2,3,4]);
    $tab->push([5,6,7,8]);
    $tab->push([1,9,10,11]);
    $count = $tab->count;
    # 3
    
    # Über alle Zeilen und Kolumnen iterieren
    
    for my $row ($tab->rows) {
        for my $value ($row->values) {
            # ...
        }
    }
    
    # Werte
    
    @values = $tab->values('a');
    # (1,5,1)
    
    $valueA = $tab->values('a');
    # [1,5,1]
    
    @values = $tab->values('a',-distinct=>1);
    # (1,5)

DESCRIPTION

Ein Objekt der Klasse repräsentiert eine Tabelle, also eine Liste von gleichförmigen Zeilen. Die Namen der Kolumnen werden dem Konstruktor der Klasse übergeben. Sie bezeichnen die Komponenten der Zeilen. Die Zeilen sind Objekte der Klasse Quiq::TableRow.

METHODS

Klassenmethoden

new() - Konstruktor

Synopsis

    $tab = $class->new(\@columns);

Arguments

@columns

Liste der Kolumnennamen (Strings).

Returns

Referenz auf Tabellen-Objekt

Description

Instantiiere ein Tabellen-Objekt mit den Kolumnennamen @columns und liefere eine Referenz auf das Objekt zurück. Die Kolumnennamen werden nicht kopiert, die Referenz wird im Objekt gespeichert. Die Liste der Zeilen ist zunächst leer.

Objektmethoden

columns() - Liste der Kolumnennamen

Synopsis

    @columns | $columnA = $tab->columns;

Returns

Liste der Kolumnennamen (Strings). Im Skalarkontext eine Referenz auf die Liste.

Description

Liefere die Liste der Kolumnennamen der Tabelle.

count() - Anzahl der Zeilen

Synopsis

    $count = $tab->count;

Returns

Integer

Description

Liefere die Anzahl der Zeilen der Tabelle.

columnProperties() - Eigenschaften der Werte einer Kolumne

Synopsis

    $prp = $tab->columnProperties($column);

Arguments

$column

Kolumnenname (String).

Returns

Properties-Objekt (Quiq::Properties)

Description

Ermittele die Eigenschaften der Werte der Kolumne $column und liefere ein Objekt, das diese Eigenschaften abfragbar zur Verfügung stellt, zurück.

columnIndex() - Index einer Kolumne

Synopsis

    $i = $tab->columnIndex($column);

Arguments

$column

Kolumnenname (String).

Returns

Integer

Description

Liefere den Index der Kolumne $column. Der Index einer Kolumne ist ihre Position innerhalb des Kolumnen-Array.

push() - Füge Zeile hinzu

Synopsis

    $tab->push(\@arr);

Arguments

@arr

Liste von Zeilendaten (Strings).

Description

Füge eine Zeile mit den Daten @arr zur Tabelle hinzu. Die Anzahl der Elemente in @arr muss mit der Anzahl der Kolumnen übereinstimmen, sonst wird eine Exception geworfen.

rows() - Liste der Zeilen

Synopsis

    @rows | $rowA = $tab->rows;

Returns

Liste der Zeilen (Objekte der Klasse Quiq::TableRow). Im Skalarkontext eine Referenz auf die Liste.

Description

Liefere die Liste der Zeilen der Tabelle.

values() - Werte einer Kolumne

Synopsis

    @values | $valueA = $tab->values($column,@opt);

Arguments

$column

Kolumnenname (String).

Options

-distinct => $bool (Default: 0)

Liste der verschiedenen Werte.

Returns

Liste der Werte (Strings). Im Skalarkontext eine Referenz auf die Liste.

Description

Liefere die Liste der Werte der Kolumne $column. Per Default wird die Liste aller Werte geliefert, auch wenn sie mehrfach vorkommen. Siehe auch Option -distinct.

width() - Anzahl der Kolumnen

Synopsis

    $width = $tab->width;

Returns

Integer

Description

Liefere die Anzahl der Kolumnen der Tabelle.

VERSION

1.140

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2019 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.