Generators क्या हैं
एक generator values की एक sequence एक-एक करके produce करने के लिए एक coroutine इस्तेमाल करता है।
In this page:
Generators
एक generator एक function है जो successive values yield करता है, और इसे coroutine.wrap में wrap करना एक for loop में इस्तेमाल होने लायक एक iterator देता है। Values lazily produce होती हैं, सिर्फ तब जब loop अगली वाली माँगे। यह infinite sequences के लिए भी काम करता है, जब तक loop खुद रुक जाए।
Note:
एक for loop तब रुकता है जब iterator nil return करे, इसलिए एक finished generator loop खत्म कर देता है।
उदाहरण: Generators
local function range(n)
return coroutine.wrap(function()
for i = 1, n do coroutine.yield(i) end
end)
end
for v in range(4) do io.write(v, " ") end
print()
local function fib()
return coroutine.wrap(function()
local a, b = 0, 1
while true do
coroutine.yield(a)
a, b = b, a + b
end
end)
end
for v in fib() do
if v > 50 then break end
io.write(v, " ")
end
print()
-- Output:
-- 1 2 3 4
-- 0 1 1 2 3 5 8 13 21 34
Login to try C/C++/Java/PHP code in the editor
आम गलतियां
- yield करने की बजाय पहले पूरी list बनाना
- बिना break के एक infinite generator लिखना
- generator function को इसके result इस्तेमाल करने की बजाय call करना
चैप्टर सारांश
- Values एक-एक करके yield करें
- wrap इसे एक iterator में बदल देता है
- Values lazily produce होती हैं
- जब function nil return करे loop खत्म होता है
🔒
Chapter Quiz — Complete all 7 topics to unlock
0/7 topics done
Complete these topics first: