Schrift
[thread]6620[/thread]

Problem mit Übungsaufgabe: Anonyme Arrays



<< >> 4 Einträge, 1 Seite
Fraser
 2005-01-10 12:38
#50676 #50676
User since
2005-01-10
10 Artikel
BenutzerIn
[default_avatar]
Hi Leute,
ich bins nochmal. Ich hab hier noch ne Übungsaufgabe, bei ich einfach auf keinen grünen Ast komme. Vielleicht kann mir jemand helfen. (renee)
Code: (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
for $x (4..7) {
    for $y (0..2) {
        $AoA[$x][$y] = func($x, $y)  # was wird übergeben
    }
}

$x = "Perl";
$y = "ist spitze";

foreach (4..7) {
    $AoA[$_][1] = func1($x, $y); # was wird übergeben
}

push @{$AoA[6]}, "na","klar";

for $i (0.."$#AoA") {
    for (0.."$#{$AoA[$i]}") {
        print "$i,$_: $AoA[$i][$_] ";  # was passiert in den
    }                                              # beiden for-Schleifen
    print "\n";
}

print "Wert: $AoA[6][4]\n";

sub func {
(shift)*(shift)    # was passiert in der Funktion
}

sub func1{
    shift;
    $_[0];         # was passsiert in der Funktion
}
format_c
 2005-01-10 12:56
#50677 #50677
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Auch wenn ich nicht renee heiße würde es helfen wenn du markieren könntest welche stellen du nicht verstehst.


Gruß Alex
Ronnie
 2005-01-10 13:08
#50678 #50678
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Du solltest strict und warnings verwenden. Data::Dumper hilft dir rauszufinden was du da wirklich machst!
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl

use Data::Dumper;

for $x (4..7) {
for $y (0..2) {
$AoA[$x][$y] = $x * $y;
}
}

print Dumper $AoA;

Das Beispeil funktioniert z.B. so nicht was man an der leeren Ausgabe sieht.\n\n

<!--EDIT|Ronnie|1105355358-->
renee
 2005-01-10 14:00
#50679 #50679
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (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
# die ersten 4 Zeilen bleiben frei ($x fängt erst bei Index 4 an, gehe bis Zeil 8
for $x (4..7) {
# für die ersten drei Spalten (der entsprechenden Zeile)
for $y (0..2) {
# schreibe in die Zelle das Ergebnis von func
$AoA[$x][$y] = func($x, $y)
}
}

$x = "Perl";
$y = "ist spitze";

# für jede Zeile 5 - 8: schreibe in Zelle 2 das Ergebnis von func1
foreach (4..7) {
$AoA[$_][1] = func1($x, $y);
}

# füge an Zeile 7 noch "na" und "klar" an (sind also 2 weitere Zellen)
push @{$AoA[6]}, "na","klar";

# iteriere (laufe) über jedes Element (Zeile)
for $i (0.."$#AoA") {
# iteriere über jedes Element des Anonymen Arrays (Spalte)
for (0.."$#{$AoA[$i]}") {
# gebe das Element (Zelle) aus
print "$i,$_: $AoA[$i][$_] ";
}
print "\n";
}

# gebe den Wert der 7.Zeile und 5. Spalte wieder (G6)
print "Wert: $AoA[6][4]\n";

# hier wird das Produkt der beiden Parameter zurückgegeben, obwohl
# kein explizites return angegeben ist. Ist ein return nicht explizit vorhanden,
# wird der Wert des zuletzt evaluierten Ausdrucks zurückgegeben.
# Die Parameter stehen in dem Array @_ . Das shift holt sich den ersten Wert
# aus dem Array, das angegeben ist (shift(@array)), oder - wenn nix angegeben
# ist aus @_
# Das Ergebnis wird in $_ gespeichert, weil keine Variable explizit angegeben ist
sub func {
(shift)*(shift);
}

# hier wird automatisch der zweite Parameter wieder zurückgegeben,
# obwohl kein explizites return angegeben ist.
sub func1{
shift;
$_[0];
}


Zu @_ und $_ siehe perldoc perlvar
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 4 Einträge, 1 Seite



View all threads created 2005-01-10 12:38.