2010-10-31 5 views
5

मेरी अज्ञानता को क्षमा करें, लेकिन मेटाबोजेक्ट प्रोटोकॉल क्या है, और रुबी के पास एक है? यदि नहीं, तो रूबी के लिए इसे लागू करना संभव है? रूबी के पास होने पर मेटाबोजेक्ट प्रोटोकॉल के पास कौन सी विशेषताएं हो सकती हैं?क्या रूबी के पास मेटाबोजेक्ट प्रोटोकॉल है और यदि नहीं, तो क्या इसे लागू करना संभव है?

+0

यह मदद करता है? http://stackoverflow.com/questions/1061908/scoping-of-open-classes-in-ruby-versus-mop-in-groovy – zengr

+0

आपने "मेटाबोजेक्ट" शब्द कहाँ सुना? –

+1

@ एंड्रयू, सीएलओएस: http://www.lisp.org/mop/concepts.html – horseyguy

उत्तर

1

मेटाबोजेक्ट प्रोटोकॉल क्या है?

सबसे अच्छा वर्णन मैं का सामना करना पड़ा Class::MOP प्रलेखन से है:

एक मेटा वस्तु प्रोटोकॉल एक वस्तु व्यवस्था करने के लिए एक API है।

अधिक विशिष्ट होने के लिए, यह किसी ऑब्जेक्ट सिस्टम (कक्षाओं, ऑब्जेक्ट, विधियों, ऑब्जेक्ट विशेषताओं इत्यादि) के घटकों को सार तत्वित करता है। इन अवशेषों का उपयोग तब ऑब्जेक्ट सिस्टम का निरीक्षण और कुशलतापूर्वक करने के लिए किया जा सकता है, जिसका वर्णन वे करते हैं।

यह कहा जा सकता है कि किसी ऑब्जेक्ट सिस्टम के लिए दो एमओपी हैं; निहित एमओपी और स्पष्ट एमओपी। निहित एमओपी विधि प्रेषण या विरासत जैसी चीज़ों को संभालता है, जो ऑब्जेक्ट सिस्टम कैसे काम करता है के हिस्से के रूप में स्वचालित रूप से होता है। स्पष्ट एमओपी आमतौर पर ऑब्जेक्ट सिस्टम की आत्मनिरीक्षण/प्रतिबिंब सुविधाओं को संभालती है।

सभी ऑब्जेक्ट सिस्टमों में एमओपी निहित है। एक के बिना, वे काम नहीं करेंगे। स्पष्ट एमओपी बहुत कम आम हैं, और भाषा के आधार पर प्रतिबंधित (जावा या सी # में प्रतिबिंब) से व्यापक रूप से भिन्न हो सकते हैं (सीएलओएस एक आदर्श उदाहरण है)।


रूबी एक है?

Reopening builtin classes, redefining builtin functions?Perlmonks लेख पर इस सूत्र के अनुसार मुझे लगता है कि इस सवाल का जवाब कोई है (कम से कम क्या एक एमओपी है की कठोरतम अर्थ में)।

जाहिर है यहाँ तो यह तो जवाब questions there क्योंकि Class::MOP/Moose लेखक करता है के पर्ल पक्ष में प्रश्न पोस्ट करने के लायक हो सकता है कुछ लोटना जगह नहीं है।

+2

जानकारी के लिए धन्यवाद, हालांकि पहले लिंक को पढ़ना "बिल्टिन क्लास को फिर से खोलना ..." ऐसा प्रतीत होता है कि लेखक को वास्तव में बड़ी मात्रा में उसकी रूबी कमेंटरी गलत है जो उसके बिंदु को कमजोर करती है। रूबी में जो कुछ भी वह करना मुश्किल या असंभव कहता है वह रूबी में वास्तव में करना बहुत आसान है। मुझे रूबी और पर्ल दोनों में कुशलता वाले किसी ऐसे व्यक्ति द्वारा लिखी गई एक समान प्रकृति का एक लेख देखना अच्छा लगेगा :) धन्यवाद हालांकि! – horseyguy

0

यदि आप परिभाषा के करीब देखते हैं, तो आप देखेंगे कि रूबी में एक एमओपी है। क्या यह सीएलओएस में से एक है? नहीं, सीएलओएस मेटा-सर्कुलर एमओपी जो महान है (मैं भी प्रतिभा कहूंगा), लेकिन यह एक सही तरीका नहीं है, Smalltalk पर एक नज़र डालें। एक नया वर्ग

  • एक नया संपत्ति या विधि
  • कारण एक वर्ग को बनाएँ या हटाना

    1. : एक को लागू करने के एमओपी आप सभी की जरूरत कार्यों कि करने के लिए अपने क्रम अनुमति देते हैं प्रदान करना है (मान लीजिए कि बुनियादी हैं) एक अलग वर्ग से प्राप्त होता है ("कक्षा संरचना बदलें")
    2. कक्षा के तरीकों को परिभाषित करने वाला कोड जेनरेट या बदलें।

    और रूबी उन सभी को करने का एक तरीका प्रदान करता है।

    एक तरफ ध्यान दें पर: कक्षा :: एमओपी के लेखक सही है (IMHO) जब यह दावा है कि चीजें आप एक मेटा परिपत्र एमओपी के साथ कर सकते से कुछ रूबी (अस्वीकरण में करने के लिए कठिन हो सकता है: मैं है शून्य, zilch, nada पर्ल ज्ञान, इसलिए मैं एमओपी जैसे एमओपी बनाम एमओपी की तरह स्मॉलटाक सोच रहा हूं) लेकिन उनमें से अधिकतर बहुत विशिष्ट हैं (मैं यहां मेटाक्लास इंस्टेंटेशन के बारे में सोच रहा हूं) और चीजों को उनके बिना काम करने के तरीके हैं । मुझे लगता है कि यह सब आपके बिंदु दृश्य पर निर्भर करता है, मेटा सर्कुलर एमओपी कूलर हैं लेकिन अकादमिक पक्ष और गैर मेटा सर्कुलर एमओपी पर अधिक लागू करने के लिए अधिक व्यावहारिक और आसान हैं।

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

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