Làm thế nào để tìm tối đa số trong Perl mảng

Nhiệm vụ. Trong Văn chương trình có một mảng @arr (ba chữ cái đầu từ chữ "mảng"). Cần phải tìm số đó là mảng này.

Cách tốt nhất để giải quyết vấn đề này là để sử dụng các chức năng max từ thư viện List::Util. Thư viện List::Util đi kèm với Perl, vì vậy, nếu bạn có Perl, thư viện này là có bổ sung cài đặt, không có gì.

Đây là một ví dụ chương trình tìm và hiển thị tối đa số từ mảng, trong đó có các con số:

▶ Run
#!/usr/bin/perl

use List::Util qw(max);

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

print max(@arr);

Chương trình sẽ hiển thị các số 8. (Để thực hiện các mã trình duyệt ).

Khi anh kết nối với một thư viện, chúng ta đã chỉ ra rằng chúng ta sẽ sử dụng các chức năng max: use List::Util qw(max);. Nếu bạn chỉ cần kết nối thư viện use List::Util;, các chương trình sẽ cấp một lỗi Undefined subroutine &main::max called at script.pl line 7..

Trong mảng không có yếu tố

Nếu các mảng không có yếu tố, sau đó max sẽ trở lại undef. Đây là chương trình mẫu trong đó có tính đến trường hợp sau đây:

▶ Run
#!/usr/bin/perl

use List::Util qw(max);

my @arr;

my $max = max(@arr);

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

Trong chương trình này, chúng tôi lưu trữ các kết quả của các chức năng max trong những biến nếu quả là không undef, chúng ta suy ra kết quả này, nếu undef, chúng ta suy ra chữ trên màn hình.

Ở đây chúng tôi kiểm tra kết quả của các chức năng max, nhưng nó sẽ có thể cho biết số của các yếu tố trong mảng và nếu số của mục là 0, sau đó thực hiện những gì anh cần phải làm gì trong trường hợp của một mảng trống rỗng.

Làm việc trong trường hợp các mảng đã chuỗi

Khi làm việc với các chức năng max từ thư viện List::Util có một sự tinh tế. Thực sự max trở về mức tối đa số từ các mảng, và những phần tử mà xem số là tối đa.

Đây là một ví dụ. Kết quả max(-100, 'ABC', -4) sẽ dòng 'ABC'. Điều này xảy ra do thực tế mà giá trị số của chuỗi 'ABC' được không, không được giá trị lớn nhất trong mảng này, như vậy sẽ kết quả là những yếu tố với những cao nhất số giá trị. Trong ví dụ này, chuỗi 'ABC'.

Một ví dụ khác. Kết quả max(1, 7, '10W') sẽ dòng '10W'.

Tài liệu chính thức

Đây là một đoạn trong đầu ra perldoc List::Util  về chức năng 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

Các bài viết khác