Perbandingan penjana PHP dan objek iterator

王林
Lepaskan: 2023-09-16 17:42:02
ke hadapan
952 orang telah melayarinya

Perbandingan penjana PHP dan objek iterator

Pengenalan

Apabila fungsi penjana dipanggil, objek kelas Penjana baharu akan dikembalikan secara dalaman. Ia melaksanakan antara muka Iterator. Antara muka iterator mentakrifkan kaedah abstrak berikut

  • Iterator::current - Mengembalikan elemen semasa
  • Iterator: :key — Mengembalikan kunci elemen semasa
  • —Motor
  • —Motor ke hadapan::nex Elemen seterusnya
  • Iterator: :rewind
  • — Gulung semula iterator ke elemen pertama
  • Iterator::valid
  • — Semak sama ada kedudukan semasa adalah sah

Penjana bertindak sebagai objectforward-only , Dan menyediakan kaedah yang boleh dipanggil untuk memanipulasi keadaan penjana, termasuk menghantar nilai kepada dan mengembalikan nilai daripada penjana.

Penjana sebagai Interaktor

Dalam contoh di bawah, fungsi penjana menjana garisan dalam fail objek penjana, yang boleh diulang menggunakan gelung oreach. Kaedah iterator seperti current() dan next() juga boleh dipanggil. Walau bagaimanapun, memandangkan penjana ialah lelaran ke hadapan sahaja, memanggil kaedah rewind() akan membuang pengecualian

Contoh

<?php
function filegenerator($name) {
   $fileHandle = fopen($name, &#39;r&#39;);
   while ($line = fgets($fileHandle)) {
      yield $line;
   }
   fclose($fileHandle);
}
$name="test.txt";
$file=filegenerator($name);
foreach ($file as $line)
echo $line;
$file->rewind();
echo $file->current();
$file->next();
echo $file->current();
?>
Salin selepas log masuk

Output

Selepas melelaran pada baris fail, ralat maut ditunjukkan seperti berikut

PHP User Defined Functions
PHP Function Arguments
PHP Variable Functions
PHP Internal (Built-in) Functions
PHP Anonymous functions
PHP Arrow Functions
PHP Fatal error: Uncaught Exception: Cannot rewind a generator that was already run
Salin selepas log masuk

Atas ialah kandungan terperinci Perbandingan penjana PHP dan objek iterator. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!