2009-07-01 5 views
5

सी # this और वीबी में ME है। लुआ समकक्ष क्या है?लुआ में ऑब्जेक्ट का संदर्भ कैसे होता है?

मैं रोबॉक्स में स्क्रिप्ट क्लास के अभिभावक को संदर्भित करने का प्रयास कर रहा हूं।

+5

मैंने आपके लिए "लुआ" को लुआ में बदल दिया।लुआ पुर्तगाली में पृथ्वी का चंद्रमा का एक उचित संज्ञा है। यह एक संक्षिप्त शब्द नहीं है। – RBerteig

उत्तर

10

Lua documentation section 2.5.9 से, आत्म संदर्भ आमतौर पर self है:

पेट के वाक्य रचना के तरीकों को परिभाषित करने, वह है, कार्यों कि एक अंतर्निहित अतिरिक्त पैरामीटर self है के लिए प्रयोग किया जाता है। इस प्रकार, बयान

function t.a.b.c:f (params) body end 

वाक्यात्मक चीनी के लिए

t.a.b.c.f = function (self, params) body end 
9

Greg pointed out already के रूप में, नाम आप देख रहे हैं self है।

हालांकि, ध्यान रखें कि लुआ एक ओओपी भाषा नहीं है, यह पूरी तरह से प्रक्रियात्मक या कार्यात्मक भाषा है। यह एक ओओपी डिजाइन को लागू करने के लिए बस सभी निम्न स्तर की तंत्र प्रदान करता है। डिजाइन सिद्धांतों में से एक को "तंत्र प्रदान करना, नीति नहीं" के रूप में व्यक्त किया गया है। इसके कारण, इस बात की गारंटी देने का कोई तरीका नहीं है कि आप जो पर्यावरण चला रहे हैं वह विरासत का उपयोग करता है, या आप किसी दिए गए ऑब्जेक्ट के लिए माता-पिता को पा सकते हैं।

  • Lua Manual, विशेष रूप से वर्गों 2.5.8, 2.5.9 और 2.8:

    यह लुआ पुस्तिका, लुआ में प्रोग्रामिंग अनुभागों की समीक्षा करने के लिए एक अच्छा विचार है, और विकी कि सुविधाओं OOP से संबंधित होगा।

  • PiL Chapter 16, जो पहले संस्करण की ऑनलाइन प्रति से जुड़ा हुआ था, जो लुआ 5.0 के समय लिखा गया था। ऑनलाइन प्रतिलिपि पढ़ें, लेकिन ध्यान रखें कि लूआ का वर्तमान संस्करण इतना अलग है कि दूसरे संस्करण को खरीदने की अत्यधिक अनुशंसा की जाती है।)
  • Lua Wiki on OOP, विशेष रूप से tutorial और simple classes पर आलेख।
2

लुआ में, आपको "स्वयं" मान चाहिए। हालांकि, आप ROBLOX का उपयोग कर रहे हैं, जो sandboxed है। प्रत्येक स्क्रिप्ट अपने आप सूत्र में चलाया जाता है, और स्क्रिप्ट को संदर्भित करने के लिए, आप "स्क्रिप्ट" का उपयोग करना होगा, यानी script.Parent

1
local Table = {} 
Table.Var = "Testing" 

function Table:Test() 
print(self.Var) 
end 
Table:Test() 

या

local Table = {} 
Table.Var = "Testing" 
function Table.Test(self) 
print(self.Var) 
end 

दोनों समारोह भी ऐसा ही होगा सही बात

--Edit--

यह केवल तालिकाओं के साथ काम करते हैं। यदि आप स्क्रिप्ट का अभिभावक प्राप्त करने की कोशिश कर रहे हैं तो आपको स्क्रिप्ट का उपयोग करने की आवश्यकता है। माता-पिता

- नोट स्क्रिप्ट। अभिभावक वापस लौटाएगा जहां स्क्रिप्ट स्थित है। यदि आप एक और माता-पिता जोड़ते हैं, तो स्क्रिप्ट। माता-पिता। माता-पिता, यह अभिभावक के माता-पिता को वापस कर देगा, और इसी तरह।

संबंधित मुद्दे