Thread Umgang mit referenzierten Arrays: Schön schreiben No. 2 (8 answers)
Opened by Sven_123 at 2011-09-30 11:50

Sven_123
 2011-10-07 10:22
#152908 #152908
User since
2010-06-01
120 Artikel
BenutzerIn
[default_avatar]
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)

View full thread Umgang mit referenzierten Arrays: Schön schreiben No. 2