Thread OOP Array in einem Hash of Array sortieren (12 answers)
Opened by der_thomas at 2014-03-14 21:25

der_thomas
 2014-03-14 21:25
#174114 #174114
User since
2013-09-07
158 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich schreibe gerade mein kleines Datenbankprogramm objektorientiert um.

Um die Daten sortieren zu können kam ich nun endlich auf eine funktionierende Lösung:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# nur dem Verständnis halber der Konstruktor:
sub new {
   # @liste = ([1,2,3],[4,5,6] u.s.w. )
   my $self = {
               'zeiger'      => 0,
               'maxspalte'   => $#{$liste[0]},
               'maxzeile'    => $#liste,
               'daten'       => \@liste
               };
        bless($self, $classname);
}

sub sort {
    my $self = shift;
    my $spalte;
    unless (@_){$spalte = $self->{maxspalte}-2} # hier unwichtig
    else {$spalte = shift}                      # hier unwichtig

    my $unsortiertref = $self->{daten};
    my @unsortiert = @$unsortiertref;

    no warnings 'numeric';        
    my @sortiert = sort { $a->[$spalte] <=> $b->[$spalte] ||
    $a->[$spalte] cmp $b->[$spalte] } @unsortiert;

    $self->{daten} = \@sortiert;
}



Funktionieren tut das offenbar, aber ich habe das Gefühl dass das auch einfacher gehen könnte ?
Also ohne dass man die Daten erst in ein Array umwandelt um dieses nach dem Sortieren als Referenz wieder dem Objekt zuzuweisen.

Es geht also darum ob man die Zeilen 20,21 und 27 nicht direkt in die Sortierroutine (Zeile 24 und 25) einbauen kann ?

Ob das dann wirklich sinnvoll wäre ist eine andere Frage, denn obige Methode ist zumindest insofern ganz gut als ich das auch in 24 Monaten noch verstehe...hoffe ich zumindest ;)

thomas

View full thread OOP Array in einem Hash of Array sortieren