Thread Hash mit weiterem Hash ergänzen
(5 answers)
Opened by Stefan_S at 2018-03-06 11:26
Auch wenn's zuerst schwerfällt: Auf die Dauer ist das Problem etwas, das am besten mit Klassen gelöst werden sollte. Wie das geht, habe ich hier beschrieben. Dauert halt etwas, es zu lernen. Lohnt aber.
Beispiel (das aber nicht dafür gedacht ist, direkt in produktiv genutzte Skripte kopiert zu werden): 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 61 62 63 64 65 66 #!/usr/bin/perl use warnings; use strict; package Artikel { sub new { my $classname = shift; my $args = {@_}; my $self = {nr => $args->{nr}, bestand => $args->{bestand}}; $self->{chargen} = []; return bless($self, $classname); } sub addCharge { my $self = shift; my $charge = shift; push($self->{chargen}, $charge); } sub showChargen { my $self = shift; my @chargen = @{$self->{chargen}}; my $i; if ($#chargen >= 0) { print "Artikel $self->{nr} hat folgende Chargen:\n\n"; foreach $i (@chargen) { print "ChargenID: $i->{id}\n"; print "Chargenbestand: $i->{bestand}\n"; print "\n"; } print "----------------------\n\n"; } } } package Charge { sub new { my $classname = shift; my $args = {@_}; my $self = {id => $args->{id}, bestand => $args->{bestand}}; return bless($self, $classname); } } my $artikel1 = Artikel->new(nr => 1, bestand => 10); my $artikel2 = Artikel->new(nr => 2, bestand => 20); $artikel1->addCharge(Charge->new(id => 1, bestand => 3)); $artikel1->addCharge(Charge->new(id => 2, bestand => 7)); $artikel2->addCharge(Charge->new(id => 1, bestand => 9)); $artikel2->addCharge(Charge->new(id => 2, bestand => 11)); print "\n"; $artikel1->showChargen(); $artikel2->showChargen(); Last edited: 2018-03-10 00:23:54 +0100 (CET) |