2011-01-12 16 views
5

के इस टुकड़े को समझने में मेरी सहायता करें मैंने कुछ दिनों पहले लुआ में प्रोग्रामिंग शुरू की थी। मैं वाक्यविन्यास से परिचित हो गया हूं और मैंने प्रोसोडी एक्सएमपीपी सर्वर के लिए एक मॉड्यूल लिखने में कामयाब रहा है। मैं प्रोसोडी सर्वर कॉन्फ़िगरेशन (जो लुआ में है) में कोड के एक स्निपेट में भाग गया।मुझे लुआ कोड

VirtualHost "example.com" 
    enabled = false; 
    ssl = { 
    key = "certs/example.com.key"; 
    certificate = "certs/example.com.crt"; 
    }; 

मैं यह पता लगाने की कोशिश कर रहा हूं कि दूसरी पंक्ति में तालिका पहली पंक्ति से कैसे जुड़ी हुई है।

क्या यह वर्चुअलहोस्ट फ़ंक्शन के लिए पैरामीटर है? यानी कोड को इस प्रकार लिखा जा सकता है:

VirtualHost "example.com", { 
    enabled = false; 
    ssl = { 
    key = "certs/example.com.key"; 
    certificate = "certs/example.com.crt"; 
    }; 
}; 

क्या कुछ लुआ अवधारणा मुझे आगे अध्ययन करने की आवश्यकता है?

+0

मुझे लगता है कि यह स्टैक-एक्सचेंज [प्रस्ताव] (http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2 "कोड समीक्षा") आपके लिए ब्याज की हो सकती है। यदि यह आपका समर्थन दिखाता है और इसे बीटा में लाने में मदद करता है! :) – greatwolf

उत्तर

10

पहली पंक्ति और बाकी के बीच कोई सीधा संबंध नहीं है। पहली पंक्ति VirtualHost("example.com") के बराबर है - यदि फ़ंक्शन कॉल केवल एक स्ट्रिंग पैरामीटर पास किया गया है तो आपको कोष्ठक की आवश्यकता नहीं है।

छंदशास्र के स्रोत कोड को देखते हुए, यहाँ क्या हो रहा है वैश्विक चर (ssl और enabled) में लिखते हैं कि कोड है कि विन्यास फाइल को लोड करता है फँसाने के लिए setfenv और setmetatable का एक संयोजन का उपयोग करता है। जब आप enabled = false लिखते हैं, तो यह वास्तव में वैश्विक चर enabled सेट नहीं करता है, बल्कि इसके बजाय यह प्रोसोडी कोड द्वारा परिभाषित एक फ़ंक्शन को कॉल करता है जो वर्तमान में परिभाषित वर्चुअल होस्ट पर संपत्ति सेट करता है।

यह सब कोर/configmanager.lua में parsers.lua.load फ़ंक्शन में लागू किया गया है।

आप के बारे में setfenvhere और के बारे में setmetatablehere पढ़ सकते हैं (विशेष रूप से इस कोड का उपयोग करता __newindex metamethod)।

+0

बहुत बहुत धन्यवाद, जिसने मेरी मदद की! –