Thread Tupel in Perl (29 answers)
Opened by flixxflaxx at 2013-07-20 14:10

topeg
 2013-07-21 17:07
#168968 #168968
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Ich kann schon Situationen sehen wo es praktisch ist eine verschachtelte Struktur aufzubauen, die man aber auch flach abarbeiten kann.

Das Verhalten kann man Nachbauen:

more (14.2kb):
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
use lib './AA_LIBS';
use Tuple;

use Data::Dumper;

my $t1=Tuple(qw(A B C));
my $t2=Tuple(qw(G H I));
my $t3=Tuple($t1,qw(D E F),$t2);

print '$t1 : '.join(', ',@$t1)."\n";
print '$t2 : '.join(', ',@$t2)."\n";
print '$t3 : '.join(', ',@$t3)."\n";
print "\n--------------\n";

print '$t1->[1], $t3->[4], $t2->[1] : '.join(', ', $t1->[1], $t3->[4], $t2->[1] )."\n";
print '$t3->[1], $t3->[4], $t3->[7] : '.join(', ', $t3->[1], $t3->[4], $t3->[7] )."\n";
print '@$t3[1,4,7]) : '.join(', ', @$t3[1,4,7])."\n";
print '$t3->get(1,4,7) : '.join(', ', $t3->get(1,4,7))."\n";
print '$t3->(1,4,7) : '.join(', ', $t3->(1,4,7))."\n";
print "\n--------------\n";

my $t4=Tuple(qw(J K L));
my $t5=Tuple(qw(M N O));
my $t6=Tuple($t3,$t4,$t5,'P');

print '$t6 : '.join(', ',@$t6)."\n";
print '$t6->(0,3,6,9,12) : '.join(', ', $t6->(0,3,6,9,12))."\n";
print "\n--------------\n";

while( my @list = $t6->([0,14,2]) )
{ print join(",", @list)." | "; }
print "\n\n--------------\n";

$t1->({1 => $t1->(1)."-1"});
$t2->({1 => $t2->(1)."-2"});
$t3->({4 => $t3->(4)."-3"});
$t4->set(1,$t4->(1)."-4");
$t5->set(1,$t5->get(1)."-5");
$t6->set(15,Tuple(qw(Q R S T U)));
print '$t6 : '.join(', ',@$t6)."\n";


Ausgabe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$t1 : A, B, C
$t2 : G, H, I
$t3 : A, B, C, D, E, F, G, H, I

--------------
$t1->[1], $t3->[4], $t2->[1] : B, E, H
$t3->[1], $t3->[4], $t3->[7] : B, E, H
@$t3[1,4,7]) : B, E, H
$t3->get(1,4,7) : B, E, H
$t3->(1,4,7) : B, E, H

--------------
$t6 : A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P
$t6->(0,3,6,9,12) : A, D, G, J, M

--------------
A,B | C,D | E,F | G,H | I,J | K,L | M,N | O,P |

--------------
$t6 : A, B-1, C, D, E-3, F, G, H-2, I, J, K-4, L, M, N-5, O, P, Q, R, S, T, U


Das sollte sich weitgehend wie Tupel aus Python verhalten.

EDIT:
Code Etwas erweitert. Nun gibt es auch einen Iterator wie bei Python
Zudem kann nun der Inhalt der Tupel verändert und erweitert werden.
Nette Spielerei
Anhänge
text/plain
169 lines
Tuple.pm

Last edited: 2013-07-21 23:38:59 +0200 (CEST)

View full thread Tupel in Perl