[eeei.gr Logo]
Επικοινωνία
Ταυτότητα
Μαθήματα Internet | Μαθήματα Προγραμματισμού | Net Business | Τα νέα του Internet | Ο Κόσμος του Αύριο

Hashes που περιέχουν άλλες Arrays

Μια όπως και στην περίπτωση των Arrays, μια Hash δεν αποτελεί απλώς ένα σύνολο από scalar μεταβλητές, αλλά μπορεί να περιέχει ως στοιχεία της άλλες πλήρεις arrays. Για παράδειγμα:

my %AinH = (

Skywalkers => ['Luke', 'Anakin', 'Shmi' ],

Jedis => ['Yoda', 'Obi Wan Kenobi'],

Darths => ['Sidious', 'Maul', 'Vader']

);

Εδώ τα keys είναι Skywalkers, Jedis, Darths και values τα περιεχόμενα των arrays.

Για την προσθήκη μιας ακόμη array θα δηλώσουμε:

$AinH{Droids} = [ 'C-3PO', 'R2-D2', 'FX-7'];

Για την προσθήκη ενός στοιχείου σε μια ήδη υπάρχουσα array έχουμε:

my $temp= 'new member';

my %AinH = (

Skywalkers => ['Luke', 'Anakin', 'Shmi' ],

Jedis => ['Yoda', 'Obi Wan Kenobi'],

Darths => ['Sidious', 'Maul', 'Vader']

);

push @{$AinH{Skywalkers}}, $temp;

και θα έχουμε πλέον:

Skywalkers => ['Luke', 'Anakin', 'Shmi', 'new member' ]

Η εκτύπωση

print "$AinH{Jedis}[1] \n";

print "$AinH{Droids}[0] \n";

μας δίνει:

Obi Wan Kenobi

C-3PO

Για να τυπώσουμε όλο το περιεχόμενο μιας hash of arrays όπου κάθε array περιέχει 3 elements θα δώσουμε:

my @keys = keys(%contents);

foreach my $key (@keys)

{

print "$key\n";

print "$contents{$key}[0]\n";

print "$contents{$key}[1]\n";

print "$contents{$key}[2]\n"

Το print %contents δεν θα λειτουργήσει σωστά (ως values θα τυπωθούν οι references των arrays)

Για να πάρουμε το περιεχόμενο μιας μόνο από τις arrays που περιέχει η hash θα δηλώσουμε:

my $test = $AinH{Jedis};

Αυτό μας δίνει τη reference της array

my @test2 = @$test;

print "@test2\n";

Η εκτύπωση μας δίνει:

Yoda Obi Wan Kenobi

Τέλος για να αφαιρέσουμε το περιεχόμενο ενός στοιχείου μιας array που βρίσκεται μέσα σε hash θα δηλώσουμε:

my $last_array_element = pop @{$AinH{Jedis} }

Αυτό αφαιρέσει την τιμή Obi Wan Kenobi


Τρέχουσα Ενότητα: Perl


 

Φιλικά - συνεργαζόμενα sites: Left Handed Products


© Eeei.gr 2009