ساختارهای داده تودرتو
هش از آرایهها، آرایه از هشها و پیمایش ساختارهای تودرتو.
دنیای واقعی = داده تودرتو
دادههای واقعی ترکیبیاند: هش از آرایهها، آرایه از هشها و...
هش از آرایهها
my %grades = (
Ali => [18, 15, 20],
Sara => [12, 19, 16],
);
say $grades{Ali}[0]; { 18 — نمره اول علی }
say scalar @{$grades{Ali}}; { 3 — تعداد }
پیمایش هش از آرایهها
foreach my $name (sort keys %grades) {
my $sum = 0;
$sum += $_ foreach @{$grades{$name}};
my $avg = $sum / scalar @{$grades{$name}};
say "$name میانگین: $avg";
}
آرایه از هشها
my @products = (
{ name => "Laptop", price => 25000000, qty => 3 },
{ name => "Mouse", price => 350000, qty => 10 },
);
foreach my $p (@products) {
say "$p->{name}: " . ($p->{price} * $p->{qty});
}
هش از هشها
my %users = (
ali => { name => "Ali", age => 16 },
sara => { name => "Sara", age => 15 },
);
say $users{ali}{age}; { 16 }
مثال کامل: گزارش نمرات
my %class = (
math => { Ali => 18, Sara => 15 },
phys => { Ali => 16, Sara => 19 },
);
foreach my $lesson (sort keys %class) {
print "$lesson: ";
foreach my $name (sort keys %{$class{$lesson}}) {
print "$name=$class{$lesson}{$name} ";
}
print "\n";
}
خلاصه
- $h{key}[i] — هش از آرایه
- $arr[i]{key} — آرایه از هش
- @{$h{key}} — دِرف کل
- پیمایش تودرتو = حلقه تودرتو
این مبحث بخشی از دوره آموزش کامل پرل است.