Bagaimana untuk melewati array di Perl

Tugas. Dalam kode program Perl memiliki sebuah array @arr (tiga huruf pertama dari kata "array"). Dalam array ini memiliki beberapa nilai. Anda perlu untuk pergi melalui semua elemen array dan melakukan beberapa tindakan dengan masing-masing item.

Pergi melalui array menggunakan foreach

Cara yang direkomendasikan untuk memecahkan masalah ini adalah dengan menggunakan foreach. Berikut ini adalah contoh program:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);

foreach my $el (@arr) {
    warn $el;
}

Ini semua sangat sederhana. Ada sebuah array. Selanjutnya kita membuat variabel $el (merupakan singkatan dari kata element). Siklus foreach tempat dalam variabel elemen pertama dari array (dalam contoh ini adalah 1). Mengeksekusi loop tubuh warn $el; — hal ini membawa nilai pada layar. Siklus foreach menempatkan ke dalam variabel $el berikutnya nilai dari array lagi-lagi mengeksekusi tubuh loop. Ini diulang sampai tubuh loop tidak dijalankan untuk semua elemen array.

Pergi melalui array menggunakan loop for

Berikut ini adalah contoh program bagaimana untuk berjalan di Perl array menggunakan loop loop dalam bahasa C:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);

for (my $i = 0; $i < @arr; $i++) {
    warn $arr[$i];
}

Apa yang terjadi. Ada array @arr. Kemudian kita buat variabel baru $i dan diberikan nilai 0 (0 adalah indeks elemen pertama dalam Perl array). Kemudian mengeksekusi loop tubuh warn $arr[$i];. Setelah itu, variabel $idengan operator ++ ini bertambah satu. Ia kemudian memeriksa kondisi $i < @arr. Jika kondisi kembali benar, maka semua berulang.

Solusi ini agak lebih rumit daripada solusi menggunakan foreach. Anda perlu hati-hati bekerja dengan nilai-nilai batas. Jika salah untuk menulis cek, anda dapat melewatkan nilai terakhir atau untuk mengakses tidak ada elemen di luar elemen terakhir dari array (perawatan ini akan mengembalikan undef).

Berikut ini adalah contoh program yang bekerja dengan cara yang sama, tetapi menggunakan suatu kondisi yang berbeda for:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);

for (my $i = 0; $i <= $#arr; $i++) {
    warn $arr[$i];
}

for hotel yang masuk akal untuk digunakan jika anda berada di lingkaran tubuh harus tidak hanya nilai dari elemen, dan nomor. Tapi dalam kasus ini anda dapat menggunakan foreach siklus, manual mengekspos variabel dengan indeks:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);
my $i = 0;

foreach my $el (@arr) {
    warn "index: $i value: $el";
    $i++;
}

Opsi ini lebih mudah dirasakan oleh orang dan itu kurang rentan terhadap Bahama dengan nilai batas. Tapi ada cara yang lebih mudah untuk mengatakan hal yang sama dengan each.

Pergi melalui array menggunakan while dan each

Kata kunci each tidak digunakan sangat sering, tapi hampir selalu ketika itu digunakan itu digunakan untuk bekerja dengan Hesham. Sedikit diketahui, tapi each dapat digunakan untuk pergi melalui array, dengan indeks dari elemen dan unsur itu sendiri. Berikut ini adalah kode sebelumnya ditulis menggunakan each:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);

while (my ($i, $el) = each @arr) {
    warn "index: $i value: $el";
}

each dapat diterapkan untuk array dari Perl 5.12. Jika anda menjalankan kode ini pada lebih versi sebelumnya dari Perl, maka akan error:

Type of arg 1 to each must be hash (not private array) at script.pl line 5, near "@arr) "
Execution of script.pl aborted due to compilation errors.

Topik terkait

Artikel lainnya