क्या इसलुआ में स्थानीय आवश्यकता का उपयोग क्यों करें?
local audio = require "audio"
और
require "audio"
के बीच का अंतर है वहाँ पूर्व के किसी भी लाभ है?
क्या इसलुआ में स्थानीय आवश्यकता का उपयोग क्यों करें?
local audio = require "audio"
और
require "audio"
के बीच का अंतर है वहाँ पूर्व के किसी भी लाभ है?
लुआ में एक मॉड्यूल एक ऐसा ऑब्जेक्ट है जो कई सार्वजनिक कार्यों को निर्यात करता है। लुआ में एक मॉड्यूल को परिभाषित करने के दो तरीके हैं।
module(..., package.seeall)
Audio = {}
function Audio:play()
print("play")
end
या वैकल्पिक रूप से: उदाहरण के लिए
Audio = {}
function Audio:play()
print("play")
end
return Audio
पूर्व एक मॉड्यूल को परिभाषित करने के पुराने तरीका है, लेकिन यह अभी भी कई उदाहरण में पाया जा सकता है। उत्तरार्द्ध अब मॉड्यूल को परिभाषित करने का पसंदीदा तरीका है।
इसलिए, जब तक कि आप एक स्थानीय चर के लिए एक मॉड्यूल असाइन नहीं करते हैं, इसके निर्यात किए गए चर और विधियों को संदर्भित करने का कोई तरीका नहीं है।
यदि audio
ने किसी भी वैश्विक कार्य को परिभाषित किया था, तो यह कार्य audio
आयात होने पर उपलब्ध होगा। वैश्विक कार्य और चर वैश्विक वस्तु से जुड़े हुए हैं। लुआ में _G नामक एक चर है जिसमें सभी वैश्विक चर और परिभाषित कार्य शामिल हैं। उदाहरण के लिए,
audio.lua
function play()
print("play")
end
main.lua लिए
require("audio")
play()
या
require("audio")
_G.play()
काम करता है यही कारण है, लेकिन वैश्विक वस्तु में सब कुछ डाल दिया है कई असुविधा रों। चर और कार्यों को ओवरराइट किया जा सकता है। आखिर में वैश्विक वस्तु बन जाती है और फूला हुआ होता है। मॉड्यूल में सब कुछ संरचना करना बेहतर है, इसलिए चर और विधियां अपने नामस्थान में encapsulated हैं।
'स्थानीय ऑडियो = {}' का उपयोग करना आम है और क्लाइंट को यह तय करने दें कि इसे वैश्विक के रूप में सहेजना है या नहीं। – lhf
इसलिए मुख्य कारण वैश्विक नामस्थान को आयातित आयातित फ़ाइल को रोकने के लिए है। और मुझे लगता है कि एक और लाभ नाम विवादों से परहेज कर रहा है। – Timmmm