Iterables
วงศพัทธ์ ประดับศรี 640710851
Iterable คืออะไร
Iterable คือ class หรือ object ที่สามารถทำการวนลูปได้ ซึ่งในภาษา PHP นั้นสามารถใช้กับ foreach() ได้
นั่นหมายความว่า array ทั้งหมด นับว่าเป็น Iterable เพราะสามารถวนลูปได้
ตัวอย่างโค้ดพื้นฐานสั้นๆ สำหรับ Iterable
<?php
function printStudents(iterable $students) {
foreach ($students as $student) {
echo "นักเรียน: " . $student . "\n";
}
}
$students = ["Somchai", "Wanna", "Prayut", "Yingluck"];
printStudents($students);
?>
นักเรียน: Somchai
นักเรียน: Wanna
นักเรียน: Prayut
นักเรียน: Yingluck
อย่างที่บอกว่าถ้า array ทุกตัวนั้นคือ Iterble แสดงว่า เราสามารถใช้ Iterable เป็นพาราเตอร์ได้ในฟังก์ชั่น
หรือ ใช้กับ object ที่ implement Interface จาก Iterator ได้
ตัวอย่างโค้ดเมื่อสร้าง class ที่ imprement จาก Iterator
นักเรียน: Somchai
นักเรียน: Wanna
นักเรียน: Prayut
นักเรียน: Yingluck
โดยมี method ที่สำคัญของ Iterator ดังนี้
1.current() ส่งกลับค่าที่ตัวชี้กำลังชี้ไป
2.key() ส่งกลับคีย์ที่เกี่ยวข้อง
3.next() ย้ายตัวชี้ไปยังองค์ประกอบถัดไปใน list
4.rewind() ย้ายตัวชี้ไปยังองค์ประกอบแรกใน list
5.valid() ถ้าหากว่าไม่มีตัวชี้ จะ return เป็น boolean(จริงกับเท็จ)
เปรียบเทียบกับภาษา Java,C,Python
ตัวอย่างโค้ดภาษา Java
ตัวอย่างโค้ดภาษา C
ตัวอย่างโค้ดภาษา Python
จริงๆ Java สามารถใช้ for-each หรือ for loop ถ้าเราเลือกที่จะใช้ Interface Interator
จะต้องมี method ของ Interface นั้นด้วย ทำให้ Java นั้นมีความซับซ้อนมากกว่าภาษาอื่น
ส่วนภาษา C จะไม่มี Interface Iterator แบบ Java และ โครงสร้างแบบ Python
เลยต้องใช้ Array ปกติ ในการวนรูปและควบคุมใน Index แทน ทำให้มีความซับซ้อน
ลดลงมาจาก Java นิดนึง
ส่วน Python มี Syntax ภาษาที่ง่าย มี Iterables ที่สนับสนุนเช่น list tuple และไม่จำเป็นต้องใช้ Interface แบบ Java ทำให้ Python ดูใช้งานง่ายสุด
php: iterables.//2001-2024.//เข้าถึงได้จาก: https://www.php.net/manual/en/language.types.iterable.php
w3schools.//2001-2024.//PHP iterables.//เข้าถึงได้จาก: https://www.w3schools.com/php/php_iterables.asp
Flatcoding.//2024.//PHP Iterables.//เข้าถึงได้จาก: https://flatcoding.com/tutorials/php-programming/the-essential-guide-for-php-iterable/
geeksforgeeks.//2020.//Iterable Interface in Java.//เข้าถึงได้จาก: https://www.geeksforgeeks.org/iterable-interface-in-java/
Ryan Soklaski.//2021.//Iterables.//เข้าถึงได้จาก: https://www.pythonlikeyoumeanit.com/Module2_EssentialsOfPython/Iterables.html