Thread subroutinen für Hashes und Arrays definieren (8 answers)
Opened by Wild.Card at 2017-10-19 16:37

Linuxer
 2017-10-19 16:50
#187573 #187573
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
Naja, Du musst Dir erstmal klar werden, was genau Du haben willst.

Willst Du einer Subroutine die gesamte Datenstruktur übergeben? Oder vielleicht nur Teile davon; z.B. die Array-Referenz in $A{konsum} ?


Hier ein Beispiel, in dem die Summe und Durchschnitt für ein Array errechnet, wobei das Array als Referenz übergeben werden muss.

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
use strict;
use warnings;

use List::Util qw( sum );


# sub routines
# ###########################################################################

sub summe_und_durchschnitt {
    my ( $aRef, ) = @_;

    die "Please provide an array reference.\n" 
      if not defined( $aRef ) or 'ARRAY' ne ref($aRef);

    my $summe   = sum @$aRef;
    my $schnitt = $summe/@$aRef;

    return ( $summe, $schnitt );
}



# main program
# ###########################################################################

my %A   = ( 
    name    => 'Alfred', 
    nahrung => "Sushi", 
    konsum  => [4, 2, 5, 7, 5, 3],
); 


# errechne Summe/Durchschnitt für $A{konsum} und gebe die Werte aus
printf "Summe: %d, Schnitt: %.2f\n", summe_und_durchschnitt( $A{konsum} );



Edit/Addendum:

Ich denke, sinnvoll wäre wahrscheinlich ein Ansatz, der beides berücksicht.
Einen Satz Routinen, die kleine Aufgaben durchführen, wie z.B. Summe + Durchschnitt berechnen.
Und dann evtl. eine Subroutine, die die gesamte Datenstruktur verarbeitet und dabei für die Teilaufgaben auf den zuvor definierten Satz Routinen zurückgreift.
Last edited: 2017-10-19 16:53:33 +0200 (CEST)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread subroutinen für Hashes und Arrays definieren