Hvordan til at finde antallet af par af elementer i et Perl-hash

Opgave. I program i programmeringssproget Perl er hash. Du er nødt til at finde ud af, hvor mange par værdier i det.

For eksempel, denne hash er nødvendigt at fastsætte, at 1:

my %h = (
    a => 'AAA',
);

Og for sådan en hash, du har brug for at få værdien 3:

my %h = (
    a => 'AAA',
    b => 'BBB',
    c => 'CCC',
);

Afgørelsen

Standard løsning på dette problem er, at først får alle tasterne af hash ved hjælp keys, og derefter for at tælle antallet af nøgler ved hjælp af skalar sammenhæng. Her er scriptet i sin helhed:

▶ Run
#!/usr/bin/perl

my %h = (
    a => 'AAA',
    b => 'BBB',
);

my $number = scalar keys %h;

print $number;

Scriptet vil vise antallet 2. scalar keys %h er den samme som scalar(keys(%h)).

Denne løsning virker på alle versioner af Perl. Og ofte er denne beslutning, der er bedst.

Afgørelsen i nye versioner af Perl

Perl er 5,26 antallet af par af værdier i hash kan opnås blot ved hjælp af scalar %h.

Og dette har resulteret i, at der er sammenhæng mellem, hvordan at få antallet af elementer i arrayet scalar @arr og med hensyn til antallet af par af værdier i hash scalar %h. Det er en skam, at denne adfærd ikke blev skabt i første omgang.

Hvis du bruger scalar %h i Perl tidligere end 5,26, resultatet af denne operation er en mærkelig brøkdel af de arter, 1/8. (en forklaring på, hvad denne fraktion betyder). På grund af dette en mere pålidelig løsning til at finde antallet af par i hash er stadig mulighed for scalar keys %h.

Relaterede emner

Andre artikler