क्या विशेष रूप से बनाए गए फ़ंक्शन को कॉल करने के लिए टेलोसिस टेम्पलेट में संभव है?

Aug 18 2020

मैं Telosys का उपयोग करता हूं (https://www.telosys.org) पायथन स्रोत कोड उत्पन्न करने के लिए और यह ठीक काम करता है। लेकिन मुझे एक विशिष्ट आवश्यकता है जिसे एक विशिष्ट रूपांतरण फ़ंक्शन को कॉल करके हल किया जा सकता है।

क्या एक विशिष्ट फ़ंक्शन बनाना और टेलोसिस टेम्पलेट के अंदर कॉल करना संभव है?

उदाहरण के लिए: myFunction(“abc”)या $something.myFunction(“abc”)या कुछ और

यदि आवश्यक हो तो मेरे लिए जावा, पायथन या जावास्क्रिप्ट जैसी विभिन्न भाषाओं में यह फ़ंक्शन बनाना संभव है।

जवाब

3 lgu Aug 19 2020 at 10:02

Telosys को एक्स्टेंसिबल होने के लिए डिज़ाइन किया गया है, इसलिए हाँ आप अपने स्वयं के फ़ंक्शन बना सकते हैं और उन्हें अपने टेम्पलेट्स में कॉल कर सकते हैं। जैसा कि टेलोसिस जावा में लिखा गया है, आपको जावा में इन कार्यों को बनाना होगा, फिर अपनी कक्षा को लोड करने के लिए ".vm" फ़ाइल में " लोडर " ऑब्जेक्ट का उपयोग करें और इस वर्ग में परिभाषित तरीकों को कॉल करें।

यहां बताया गया है कि कदम से कदम कैसे उठाया जाए:

  1. अपनी विशिष्ट विधि (यों) को परिभाषित करने वाला जावा वर्ग बनाने के लिए अपनी पसंदीदा आईडीई का उपयोग करें। यह वर्ग किसी भी पैकेज में हो सकता है ("डिफ़ॉल्ट / अनाम पैकेज सहित"), विधि (ओं) को "स्थिर" किया जा सकता है यदि आपको कक्षा के एक उदाहरण की आवश्यकता नहीं है।

  2. इस वर्ग को संकलित करें ( यदि आप चाहें तो एक सरल " .class " फ़ाइल या एक " .jar " फ़ाइल का उत्पादन करने का लक्ष्य रखें )

  3. कक्षा को (या जार) टेम्प्लेट बंडल फ़ोल्डर में रखें:

  • यदि आपके पास " .class " फ़ाइल है, तो इसे " क्लासेस " फ़ोल्डर में रखें
  • यदि आपके पास " .jar " फ़ाइल है, तो उसे " lib " फ़ोल्डर में डालें

उदाहरण :

TelosysTools/templates/my-bundle/classes/MyClass.class
TelosysTools/templates/my-bundle/lib/my-lib.jar
  1. टेम्प्लेट फ़ाइल में (".vm") अपने जावा वर्ग को लोड करने के लिए " $ लोडर " ऑब्जेक्ट का उपयोग करें और इसके किसी भी तरीके को कॉल करें "$ लोडर" संदर्भ यहां देखें:http://www.telosys.org/templates-doc/objects/loader.html

यदि आपके सभी तरीके "स्थिर" हैं, तो आपको एक उदाहरण की आवश्यकता नहीं है इसलिए बस " $ loader.loadClass () " का उपयोग करें। उदाहरण :

## load the class and keep it in a new “$Math” object (no instance created)
#set( $Math = $loader.loadClass("java.lang.Math")
## use the static methods of this class
$Math.random()

यदि आपके तरीके "स्थिर" नहीं हैं, तो आपको एक उदाहरण की आवश्यकता है, तो " $ loader.newInstance () " का उपयोग करें। उदाहरण :

## create an instance of StringBuilder and put it in the context with #set
#set( $strBuilder = $loader.newInstance('java.lang.StringBuilder') )
## use the instance to call a method
$strBuilder.append('aa') ## create new instance of a specific class : MyTool.class #set( $tool = $loader.newInstance('MyTool') ) ## use the instance to call a method $tool.myFunction()

तो योग करने के लिए, आप जावा-जेआरई (उदाहरण के लिए "मठ", "स्ट्रिंगबर्स्ट") द्वारा प्रदान की गई किसी भी कक्षा का उपयोग कर सकते हैं, आप एक ".जार" फ़ाइल जोड़कर मौजूदा पुस्तकालयों का पुन: उपयोग कर सकते हैं (यदि आवश्यक हो तो निर्भरता जोड़ने के लिए मत भूलना। जार फ़ाइल स्टैंड-अलोन नहीं है) या केवल एक ".class" फ़ाइल जोड़ें।