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; }
@{ $self->{daten} } = sort { ... } @{ $self->{daten} };
QuoteWie heißt denn die Klasse?
QuoteDen Methodennamen "sort" finde ich nicht so geschickt, weil man es mit der builtin-Funktion "sort()" verwechseln könnte.
QuoteBei einer datenbankgestützten Anwendung kann das Sortieren auch die DB-Engine übernehmen. Inwiefern kommt das bei Dir nicht in Frage?
QuoteNunja, ich nenn das Teil nur Datenbank, in Wirklichkeit ist da aber keine richtige Datenbank im Hintergrund. D.h. alle Methoden/Zugriffe sind selbstgetrickt und abgespeichert wird per Storable und alternativ als Textfile.
QuoteSehr schön, ja, es gibt Gründe für ;)....
QuoteTrotzdem sind Tutorials IMHO unverzichtbar.
Quote.... ich würde mehr Wert legen auf moderne Objektorientierung allgemein
2014-03-15T11:11:00 der_thomas@FIFO
Danke, das funktioniert so wie von Dir beschrieben.
QuoteCode (perl): (dl )1 2 3 4 5sub sort { my $self = shift; my $spalte; unless (@_){$spalte = $self->{maxspalte}-2} # hier unwichtig else {$spalte = shift} # hier unwichtig
1 2 3 4 5
sub mySort { my ( $self, $spalte ) = @_; if ( ! defined $spalte ) { $spalte = $self->{maxspalte} - 2; }
1 2 3 4 5 6 7
sub sort_by_column { my $self = shift; my $column = shift; $column = $self->{max_col}-2 if !defined $column; ## oder regex check auf integer ... }
1 2 3 4 5 6
sub sort_by_column { my $self = shift; my $column = @_ ? shift : $self->{max_col}-2; ... }
1 2 3 4 5 6
sub sort_by_column { my $self = shift; my $column = shift // $self->{max_col}-1; ... }