Bagaimana menemukan jumlah pasangan unsur-unsur di Perl hash

Tugas. Dalam program dalam bahasa pemrograman Perl adalah hash. Anda perlu mencari tahu berapa banyak pasangan nilai-nilai di dalamnya.

Misalnya, hash ini perlu untuk diatur ke 1:

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

Dan untuk seperti hash, anda perlu untuk mendapatkan nilai 3:

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

Keputusan

Standar solusi untuk masalah ini adalah dengan terlebih dahulu mendapatkan semua kunci hash dengan menggunakan keys, dan kemudian untuk menghitung jumlah kunci dengan menggunakan konteks skalar. Berikut adalah script lengkap:

▶ Run
#!/usr/bin/perl

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

my $number = scalar keys %h;

print $number;

Script akan menampilkan jumlah 2. scalar keys %h adalah sama seperti scalar(keys(%h)).

Solusi ini bekerja pada semua versi Perl. Dan seringkali keputusan ini adalah yang terbaik.

Keputusan dalam versi baru dari Perl

Perl 5.26 jumlah pasangan dari nilai hash yang dapat diperoleh hanya dengan menggunakan scalar %h.

Dan hal ini mengakibatkan konsistensi antara bagaimana untuk mendapatkan jumlah elemen dalam array scalar @arr dan untuk jumlah pasangan nilai hash scalar %h. Ini adalah sayang sekali bahwa perilaku ini tidak diciptakan awalnya.

Jika anda menggunakan scalar %h di Perl sebelumnya dari 5.26, hasil dari operasi ini adalah aneh sebagian kecil dari spesies 1/8. (penjelasan tentang apa yang fraksi ini berarti). Karena ini pilihan yang lebih dapat diandalkan untuk menemukan jumlah pasangan di hash adalah masih pilihan scalar keys %h.

Topik terkait

Artikel lainnya