Lua 5.1 documentation for load()
से:व्यवहार() जब हिस्सा फ़ंक्शन शून्य
भार एक हिस्सा समारोह
func
का उपयोग कर अपने टुकड़े को पाने के लिए।func
पर प्रत्येक कॉल को एक स्ट्रिंग को वापस करना होगा जो पिछले परिणामों के साथ मिलकर बनता है। एक खाली स्ट्रिंग की वापसी, शून्य, या कोई मान खंड के अंत को संकेत नहीं देता है।
मेरे परीक्षण से, यह वास्तव में सच नहीं है। या, बल्कि, दस्तावेज न्यूनतम भ्रामक है।
इस उदाहरण स्क्रिप्ट पर विचार करें:
function make_loader(return_at)
local x = 0
return function()
x = x + 1
if x == return_at then return 'return true' end
return nil
end
end
x = 0
repeat
x = x + 1
until not load(make_loader(x))()
print(x)
उत्पादन उससे पहले load()
देता है और कुछ भी नहीं फ़ंक्शन देता है nil
लौटे समारोह make_loader()
द्वारा वापस करने के लिए लगातार कॉल की संख्या है।
यदि आउटपुट फेस वैल्यू पर लिया जाना है तो आउटपुट यहां "1" होने की उम्मीद करेगा। हालांकि, आउटपुट "3" है। इसका तात्पर्य है कि load()
पर तर्क nil
load()
छोड़ने से पहले तीन बार पर लौटाता है।
function make_loader()
local x = 0
return {
fn=function()
x = x + 1
if x == 1 then return 'return true' end
return nil
end,
get_x=function() return x end
}
end
loader = make_loader()
load(loader.fn)
print(loader.get_x())
यह प्रिंट "2" के रूप में मैं उम्मीद करेंगे:
दूसरी ओर, हिस्सा समारोह एक स्ट्रिंग तुरंत और फिर nil
आगामी कॉल पर वापस लौट आता है, यह केवल एक nil
लोड हो रहा है को रोकने के लिए ले जाता है।
तो मेरा सवाल है: क्या दस्तावेज़ीकरण गलत है? क्या यह व्यवहार किसी कारण से वांछनीय है? क्या यह load()
में बस एक बग है?
क्या आपने लुआ 5.2 की कोशिश की है? –
@ निकोलबोलस संख्या – cdhowie
आप इसे आजमा सकते हैं। यह शायद लुआ 5.1 में बस एक बग है। –