हमारी विकास टीम में हमारे पास एक्लिप्स और इंटेलिज आईडीईए दोनों उपयोगकर्ता हैं, मेरी टीम मुख्य रूप से ग्रोवी में काम कर रही है।

हम इस विशिष्ट टीम के जूनियर डेवलपर्स, एक आईडीई पर काम करते हुए सभी प्रासंगिक वर्गों तक पूर्ण पहुंच के साथ काम करते हैं, फिर भी स्क्रिप्ट को हमारे वेब-यूआई में कॉपी-पेस्ट करते हैं, जो आंतरिक रूप से उन्हें विशिष्ट नियमों और सेटिंग्स के आधार पर चलाता है।

चूंकि स्क्रिप्ट रनर, afaik, पर्यावरण में कुछ चर को इंजेक्ट करता है, वे स्क्रिप्ट में उपयोग के लिए उपलब्ध हैं लेकिन IDE के लिए स्वत: पूर्ण होने के लिए अनुपलब्ध हैं। Intellij में, हम उन्हें IDE स्तर पर प्रत्येक स्क्रिप्ट के लिए गतिशील गुण के रूप में घोषित करते हैं, ताकि IntelliSense इन्हें उस प्रकार की वस्तुओं के रूप में मानता है जो वे हैं, लेकिन मुझे ग्रहण में एक समान कार्यक्षमता नहीं मिल रही है, न ही किसी के बारे में अधिक जानकारी एक समान स्थिति।

उदाहरण के लिए, निम्नलिखित लिपि में:

def location = locationService.findLocationById(123)

जहाँ locationService एक प्रकार की वस्तु है जो ILocationService को लागू करती है। सर्वर पर चलने पर, location को Location प्रकार के रूप में सही ढंग से पहचाना जाता है, लेकिन IDE इसका अनुमान नहीं लगा सकता है। Intellij में, मैं locationService के लिए एक गतिशील संपत्ति जोड़ सकता हूं, इसे 'ILocationService' प्रकार के रूप में पहचान सकता हूं।

क्या यह ग्रहण पर भी संभव है?

धन्यवाद!

0
noAccountUser 5 पद 2018, 15:00

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप संपादक को टाइप अनुमान सुझाव जोड़ना चाहते हैं ताकि वह चर अभिव्यक्तियों के लिए सामग्री सहायता प्रदान कर सके, ग्रहण के भीतर कुछ संभावनाएं हैं:

  1. अपनी स्क्रिप्ट में "स्थान" पर कैरेट (कर्सर) रखें, त्वरित सहायता मेनू खोलने के लिए Ctrl+1 दबाएं और अनुमानित सुझाव जोड़ें चुनें। संवाद में, प्रकार को पूर्ण-योग्य प्रकार के चर पर सेट करें। यह सहायता तब तक प्रदान नहीं की जा सकती जब तक कि आपके कार्यक्षेत्र में DSLD समर्थन सक्षम न हो (विंडो> वरीयताएँ> ग्रूवी> DSLD> अपने कार्यक्षेत्र में DSLD समर्थन अक्षम करें अनियंत्रित होना चाहिए)।

  2. अपनी स्क्रिप्ट के लिए एक DSLD बनाएं जो इस प्रकार की आपूर्ति करता हो। यह थोड़ा अधिक जटिल है लेकिन प्रतिनिधि प्रकारों को संभालने में और अधिक लचीला है। देखें https://github.com/groovy/groovy-eclipse/wiki/DSL -डिस्क्रिप्टर (IntelliJ में GDSL है जो बहुत समान है)।

  3. अपनी स्क्रिप्ट में वेरिएबल को कास्ट या जबरदस्ती करें। थोड़ा भारी हो सकता है, लेकिन निश्चित रूप से इसे लागू करना सबसे आसान है।

  4. मुझे लगता है कि आप एक बेसस्क्रिप्ट एनोटेशन प्रदान कर सकते हैं जो कुछ अतिरिक्त संकेत दे सकता है कि स्क्रिप्ट की बाइंडिंग में क्या मौजूद होगा।

1
emilles 12 जिंदा 2019, 23:37