Lua Academy · पाठ

स्टेटलेस इटरेटर

ipairs जैसे स्टेटलेस इटरेटर लिखें और कस्टम रूप लागू करें।

पाठ 2, कुल 4 में से13 चरण

स्टेटलेस इटरेटर, CoddyKit पर Lua Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Lua Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

स्थिति-रहित इटरेटर क्या होता है

स्थिति-रहित इटरेटर कोई आंतरिक स्थिति नहीं रखता। प्रत्येक कॉल पर सभी जानकारी तर्कों के रूप में भेजी जाती है: अपरिवर्तनीय स्थिति और वर्तमान नियंत्रण चर।

ipairs: मानक उदाहरण

ipairs स्थिति-रहित है—यह तालिका को स्थिति और वर्तमान अनुक्रमणिका को नियंत्रण चर के रूप में उपयोग करता है।

local function myIpairs(t, i)
  i = i + 1
  local v = t[i]
  if v ~= nil then return i, v end
end
-- Use: for i,v in myIpairs, t, 0 do

squares इटरेटर

यह एक स्थिति-रहित इटरेटर है जो क्रमिक वर्ग लौटाता है। स्थिति में सीमा रहती है और नियंत्रण चर वर्तमान संख्या होता है।

local function squaresIter(max, n)
  n = n + 1
  if n <= max then return n, n*n end
end
for n, sq in squaresIter, 5, 0 do
  print(n, sq)
end

क्लोज़र की आवश्यकता नहीं

स्थिति-रहित इटरेटर क्लोज़र बनाने से बचते हैं। चूँकि पूरी स्थिति तर्कों के रूप में भेजी जाती है, इसलिए प्रत्येक पुनरावृत्ति पर हीप आवंटन शून्य होता है।

pairs-शैली इटरेटर लागू करना

next को इटरेटर फ़ंक्शन के रूप में उपयोग करने वाला स्थिति-रहित कुंजी-मान इटरेटर—ठीक उसी तरह जैसे pairs काम करता है।

for k, v in next, {a=1, b=2} do
  print(k, v)
end

next फ़ंक्शन

next(t, k) कुंजी k के बाद वाली अगली कुंजी-मान जोड़ी लौटाता है। शुरुआत से शुरू करने के लिए nil भेजें (या इसे छोड़ दें)।

local t = {x=10, y=20}
local k, v = next(t, nil)
print(k, v)
k, v = next(t, k)
print(k, v)

कस्टम रेंज इटरेटर

चरण वाला स्थिति-रहित रेंज इटरेटर। स्थिति में कॉन्फ़िगरेशन तालिका रहती है और नियंत्रण वर्तमान मान होता है।

local function rangeIter(state, n)
  n = n + state.step
  if n <= state.limit then return n end
end
for v in rangeIter, {limit=10, step=2}, 0 do
  print(v)
end

प्रदर्शन लाभ

स्थिति-रहित इटरेटर तंग लूप के लिए आदर्श होते हैं। प्रत्येक कॉल पर कोई क्लोज़र नहीं बनाया जाता, इसलिए सरल ट्रैवर्सल में वे स्थिति-संपन्न क्लोज़र इटरेटर से तेज़ होते हैं।

सीमाएँ

जब पुनरावृत्ति के लिए जटिल स्थिति (कई काउंटर, कतारें या गतिशील डेटा) चाहिए, तो स्थिति-रहित इटरेटर असुविधाजनक हो जाते हैं। इसके बजाय स्थिति-संपन्न क्लोज़र इटरेटर या कोरूटीन का उपयोग करें।

table.move के साथ संयोजन

स्थिति-रहित स्लाइस इटरेटर तालिका के एक स्लाइस से तत्व लौटाता है। अपरिवर्तनीय स्थिति में सरणी और अंतिम अनुक्रमणिका रहती है; नियंत्रण वर्तमान अनुक्रमणिका होता है।

मानक लाइब्रेरी के स्थिति-रहित इटरेटर

ipairs, pairs (next के माध्यम से) और string.gmatch आंतरिक रूप से स्थिति-रहित या लगभग स्थिति-रहित डिज़ाइन का उपयोग करते हैं।

स्थिति-रहित इटरेटर संबंधी प्रश्न

किस वजह से कोई इटरेटर स्थिति-रहित होता है?

पुनरावृत्ति: स्थिति-रहित इटरेटर

स्थिति-रहित इटरेटर पूरा संदर्भ तर्कों के रूप में प्राप्त करते हैं, क्लोज़र आवंटन की आवश्यकता नहीं होती और उनका प्रदर्शन बहुत अच्छा होता है। वे सरणी अनुक्रमण जैसे सरल क्रमिक ट्रैवर्सल के लिए आदर्श हैं।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Lua सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
40
पाठ
159

अक्सर पूछे जाने वाले प्रश्न

क्या “स्टेटलेस इटरेटर” पाठ निःशुल्क है?

हाँ — Lua Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “स्टेटलेस इटरेटर” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“स्टेटलेस इटरेटर” में मैं क्या सीखूँगा?

ipairs जैसे स्टेटलेस इटरेटर लिखें और कस्टम रूप लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Lua Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Lua Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Lua Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“स्टेटलेस इटरेटर” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Lua Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Lua Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. सामान्य for प्रोटोकॉल
  2. स्टेटलेस इटरेटर
  3. क्लोज़र के साथ स्टेटफुल इटरेटर
  4. कोरूटीन-आधारित जनरेटर
← Lua Academy पर वापस जाएँ