บทช่วยสอน Lua iterator ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้ Generics สำหรับ iterator,iterator ไร้สัญชาติ,รัฐหลาย iterator,
iterator (iterator) เป็นวัตถุที่สามารถนำมาใช้ในการสำรวจส่วนภาชนะแม่แบบไลบรารีมาตรฐานหรือทั้งหมดขององค์ประกอบที่อยู่ของแต่ละวัตถุ iterator หมายถึงภาชนะที่กำหนด
ใน Lua iterator เป็นชนิดของตัวชี้โครงสร้างการสนับสนุนซึ่งสามารถสำรวจองค์ประกอบของคอลเลกชันในแต่ละ
สำหรับการเก็บรักษายาชื่อสามัญในการทำงานซ้ำภายในของตัวเองในความเป็นจริงมันจะช่วยประหยัดค่าที่สาม: ฟังก์ชั่นซ้ำค่าคงที่ของรัฐตัวแปรในการควบคุม
Generics สำหรับการย้ำให้ชุดของคีย์ / คู่ค่าไวยากรณ์เป็นดังนี้:
for k, v in pairs(t) do print(k, v) end
รหัสข้างต้น, K, v รายการตัวแปรคู่ (T) สำหรับรายชื่อของการแสดงออก
ดูตัวอย่างต่อไปนี้:
array = {"Lua", "Tutorial"} for key,value in ipairs(array) do print(key, value) end
เอาท์พุทเป็นรหัสดังกล่าวข้างต้นจะถูกดำเนินการ:
1 Lua 2 Tutorial
ตัวอย่างข้างต้นเราใช้ฟังก์ชั่น ipairs ซ้ำ Lua ให้โดยค่าเริ่มต้น
ที่นี่เรามองกระบวนการสำหรับการดำเนินการของพัดลม:
. ใน Lua เรามักจะใช้เพื่ออธิบายฟังก์ชั่น iterator เรียกร้องให้ฟังก์ชั่นนี้ในแต่ละองค์ประกอบจะส่งกลับต่อไปของคอลเลกชัน Lua iterator มีดังต่อไปนี้สองประเภท:
iterator ไร้สัญชาติหมายถึงไม่เก็บ iterators รัฐใด ๆ เพื่อให้เราสามารถใช้ห่วงไร้สัญชาติหลีกเลี่ยงการสร้าง iterator ปิดใช้จ่ายราคาพิเศษ
ย้ำแต่ละฟังก์ชั่นซ้ำสองตัวแปร (รัฐและควบคุมตัวแปรคงที่) ซึ่งเป็นพารามิเตอร์ที่เรียกว่า iterator ไร้สัญชาติโดยใช้เพียงสองค่าเหล่านี้จะได้รับองค์ประกอบถัดไป
ตัวอย่างทั่วไปของเช่น iterator ไร้สัญชาติง่ายๆคือ ipairs เขาผ่านองค์ประกอบของอาร์เรย์แต่ละ
ตัวอย่างต่อไปนี้เราจะใช้ฟังก์ชั่นที่เรียบง่ายเพื่อให้บรรลุ iterator ที่ n ดิจิตอลสแควร์:
function square(iteratorMaxCount,currentNumber) if currentNumber<iteratorMaxCount then currentNumber = currentNumber+1 return currentNumber, currentNumber*currentNumber end end for i,n in square,3,0 do print(i,n) end
เอาท์พุทตัวอย่างข้างต้นคือ
1 1 2 4 3 9
รัฐ traversal ซ้ำรวมถึงโต๊ะ (ในระหว่างรอบไม่เปลี่ยนแปลงรัฐอย่างต่อเนื่อง) และดัชนีปัจจุบัน (ตัวแปรในการควบคุม) ipairs และฟังก์ชั่นซ้ำเป็นเรื่องง่ายมากที่เราสามารถประสบความสำเร็จใน Lua:
function iter (a, i) i = i + 1 local v = a[i] if v then return i, v end end function ipairs (a) return iter, a, 0 end
เมื่อ Lua เรียก ipairs (ก) ที่จะเริ่มต้นรอบเขามาสามค่า: การ ITER ซ้ำฟังก์ชั่นสภาพคงที่การควบคุมตัวแปรค่าเริ่มต้นของ 0 แล้ว Lua เรียก ITER (A, 0) ผลตอบแทนที่ 1 [1] (เว้นแต่ [1] = ไม่มี); ซ้ำสองเรียก ITER (มี 1) ผลตอบแทนที่ 2 เป็น [2] ththth จนองค์ประกอบที่ศูนย์แรก
ในหลายกรณีความจำเป็นในการรักษาส่วนใหญ่ของข้อมูลของรัฐ iterator ที่มากกว่าเพียงแค่การระบุค่าคงที่การควบคุมและตัวแปรวิธีที่ง่ายที่สุดคือการใช้การปิดมีวิธีที่จะสรุปข้อมูลของรัฐทั้งหมดลงในตาราง, ตารางเป็นซ้ำ สถานะของค่าคงที่เพราะในกรณีนี้ข้อมูลทั้งหมดจะถูกเก็บไว้ในตารางการทำงานซ้ำจึงมักจะไม่จำเป็นต้องใช้พารามิเตอร์ที่สอง
ตัวอย่างต่อไปนี้เราได้สร้าง iterators ของเราเอง:
array = {"Lua", "Tutorial"} function elementIterator (collection) local index = 0 local count = #collection -- 闭包函数 return function () index = index + 1 if index <= count then -- 返回迭代器的当前元素 return collection[index] end end end for element in elementIterator(array) do print(element) end
เอาท์พุทตัวอย่างข้างต้นคือ
Lua Tutorial
ตัวอย่างข้างต้นเราจะเห็นการใช้ฟังก์ชั่นการปิดภายใน elementIterator คำนวณเพื่อให้บรรลุขนาดชุดและการส่งออกของแต่ละองค์ประกอบ