Thread Umgang mit referenzierten Arrays: Schön schreiben No. 2
(8 answers)
Opened by Sven_123 at 2011-09-30 11:50
Hmm...also erst nochmal ein Danke für deine ausführlichen Erklärungen, wenn ich mal wieder was Datenbankmäßiges brauch, guck ich mir Storable an, und hab hier auch ein paar Schreibansätze.
Aber ich glaub trotzdem, dass das hier zumindest eine andere Baustelle wäre (sprich, es wär vielleicht übersichtlich Klassen für meine Variablen einzubauen, aber im Endeffekt verlagert es die komplizierten Stellen, z.B. das Befüllen des Hashs auch nur von einer Auslese-Subroutine in die Befüll-Methode). Egal, ich werd es vermutlich so wie in meinem ursprünglichen, zweiten Beispiel machen - nach dem vielen Schreiben denke ich, dass es da tatsächlich keine Alternative (mehrere Namen für den selben, noch nicht existierenden Array) gibt. Edit: Andererseits - Klassen würden mir ja erlauben Operatoren zu überladen. Das wär schon sehr nett für so manches...mal sehn, wie weit ich komm. ;D Edit2: Haha, total cool ^^ 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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 #!/usr/bin/perl use strict; use warnings; {package Matrix; use overload '+' => \&plus, '""' => \± sub new{ my $class = shift; bless {}, $class; } sub fl{ my $self = shift; my $line = shift; $self->{'mat'}[$line] = [@_]; } sub mat{ return $_[0]->{'mat'}; } sub pm{ for (@{$_[0]->{'mat'}}){ print "@{$_}\n"; } } sub plus{ my $m1 = $_[0]->mat; my $m2 = $_[1]->mat; my @res; for my $i (0..$#{$m1}){ for my $j (0..$#{$m1->[$i]}){ $res[$i][$j] = $m1->[$i][$j]+$m2->[$i][$j]; } } bless {mat => [@res]}, 'Matrix'; } } my $x; $x = Matrix->new(); $x->fl(0,1,2,3); $x->fl(1,6,5,4); $x->fl(2,2,2,2); my $y; $y = Matrix->new(); $y->fl(0,6,7,8); $y->fl(1,4,4,4); $y->fl(2,1,1,1); my $z = $x + $y; print $x,"+\n",$y,"=\n",$z; Last edited: 2011-10-07 16:41:28 +0200 (CEST) |