Hvordan til at finde det maksimale antal i Perl array

Opgave. I Perl, programmet har en bred vifte @arr (de tre første bogstaver fra ordet "array"). Er nødt til at finde det maksimale antal, som er dette array.

Den bedste måde at løse dette problem er at bruge funktionen max fra biblioteket List::Util. Bibliotek List::Util kommer med Perl, så hvis du har Perl, denne pakke er til rådighed for yderligere installere noget.

Her er et eksempel program, der finder og viser det maksimale antal fra array, som indeholder de numre:

▶ Run
#!/usr/bin/perl

use List::Util qw(max);

my @arr = (1, 2, -100, 8, 0);

print max(@arr);

Programmet vil vise nummer 8. (At udføre kode i browseren ).

Når du tilslutter et bibliotek har vi tilkendegivet, at vi vil bruge den funktion, der max: use List::Util qw(max);. Hvis du blot oprette biblioteket use List::Util;, programmet vil udstede en fejl Undefined subroutine &main::max called at script.pl line 7..

I den matrix, der ikke har nogen elementer

Hvis det array, der ikke har nogen elementer, så max vil vende tilbage undef. Her er det sample program som tager hensyn til følgende tilfælde:

▶ Run
#!/usr/bin/perl

use List::Util qw(max);

my @arr;

my $max = max(@arr);

if (defined $max) {
    print $max;
} else {
    print "Empty array";
}

I dette program kan vi gemme resultatet af funktionen max i den variabel, hvis resultatet er ikke undef, vi udlede dette resultat, hvis undef, vi udlede tekst på skærmen.

Her tjekker vi resultatet af funktionen max, men det ville være muligt at kende antallet af elementer i arrayet , og hvis antallet af elementer, der er 0, og derefter udføre, hvad du skal gøre i tilfælde af et tomt array.

Arbejde i tilfælde array har string

Når du arbejder med den funktion, der max fra biblioteket List::Util der er en underfundighed. Faktisk max afkast det maksimale antal fra array, og det element, hvis vis nummer er den maksimale.

Her er et eksempel. Resultatet max(-100, 'ABC', -4) vil line 'ABC'. Dette sker på grund af den kendsgerning, at den numeriske værdi af strengen 'ABC' er nul, nul er den største værdi i dette array, så vil resultatet er det element med den største numeriske værdi. I dette eksempel strengen 'ABC'.

Et andet eksempel. Resultatet max(1, 7, '10W') vil line '10W'.

Officiel dokumentation

Her er et uddrag af output perldoc List::Util  om funktionen max:

  max
        my $num = max @list;

    Returns the entry in the list with the highest numerical value. If the
    list is empty then "undef" is returned.

        $foo = max 1..10                # 10
        $foo = max 3,9,12               # 12
        $foo = max @bar, @baz           # whatever

Andre artikler