2011-12-06 10 views
5

में ग्रोवी का classX.metaClass.getProperty स्केल में ग्रोवी के उल्लेखनीय SomeClass.metaClass.getProperty फ़ंक्शन के समतुल्य कुछ है? डोमेन विशिष्ट भाषाओं को बनाने में यह बहुत उपयोगी होगा। उदाहरण के लिए, मैं कह सकता हूं: val x = SomeClass(); x.arbitraryPropertyNamex.get("arbitraryPropertyName") या x("arbitraryPropertyName") के बजाय।स्कोला

उत्तर

9

आपके विवरण से, यह सुविधा स्कैला के Dynamic की तरह लगता है। Scaladoc से,

एक मार्कर विशेषता जो गतिशील चालान को सक्षम करती है। इस विशेषता का उदाहरण x मनमाने ढंग से विधि नाम मेथ और तर्क सूचियों के लिए x.meth (args) को कॉल करने की अनुमति देता है। यदि कोई कॉल x द्वारा मूल रूप से समर्थित नहीं है, तो यह x.applyDynamic ("मेथ", args) को फिर से लिखा गया है।

यही है, अगर आपके वर्ग Dynamic फैली हुई है, तो प्रपत्र x.arbitraryPropertyNamex.applyDynamic("arbitraryPropertyName") के अनुवाद करा के कहता है, और निश्चित रूप से आप applyDynamic के व्यवहार को परिभाषित करने के मिलता है।