2010-02-28 15 views
9

मैं एक्लिप्स के लिए नया हूं जिसका उपयोग मैं मुख्य रूप से जावा के लिए करता हूं। मैंने पहले इंटेलिजे आइडिया का उपयोग किया है जिसमें एक चर का चयन करना संभव है जो इटरटेबल (संग्रह, सूची इत्यादि) बढ़ाता है और इसे सही फोरैच लूप उत्पन्न करता है।"आसपास के साथ" - ग्रहण में टेम्पलेट: foreach

मुझे पता है कि ग्रहण फ़ोरैच टेम्पलेट के साथ कुछ ऐसा करता है, जहां यह अनुमान लगाता है कि किस चर को फिर से चालू करना है, लेकिन मैं इसे एक चयनित चर के साथ एक ही चीज़ में नहीं प्राप्त कर सकता। लेकिन क्या होगा यदि परिवर्तनीय वर्तमान दायरे में नहीं है और क्या ग्रहण गलत लगता है?

तो मुझे क्या करना एक चर (या समारोह जो एक चर देता है) जिन्हें इटरेटर को लागू करता है का चयन करने में सक्षम किया जा रहा है कोशिश कर रहा हूँ और इसे वापस कर दिया है:

चयन:

functionWhichReturnsList() (which returns List<TypeOfItemsInList>) 

परिणाम:

for (TypeOfItemsInList item : functionWhichReturnsList()) { 
    ${cursor} 
} 

कोई विचार?

+1

रूट समस्या के लिए कृपया [यह उत्तर] [1] देखें। [1]: http://stackoverflow.com/a/17591263/2394218 – summerian

+0

यह एक मेरे लिए काम किया https://stackoverflow.com/a/17591263/1053496 – nantitv

उत्तर

8

मैं आम तौर पर इन चरणों का पालन करके इस तरह कोड बनाने ] पाश के लिए सम्मिलित करने के लिए (के बाद से ग्रहण आमतौर पर चुनता निकटतम iterable जब पाश निर्माण): पर कर्सर रख कर

List<TypeOfItemsInList> list = functionWhichReturnsList() 

for (TypeOfItemsInList item : list) { 
} 

इनलाइन स्थानीय चर सूची परिवर्तनीय और टाइपिंग Alt + Shift + I:

for (TypeOfItemsInList item : functionWhichReturnsList()) { 
} 

यह इष्टतम नहीं है, लेकिन यह काम करता है।

+1

इस विधि मैं कर दिया गया है है साथ ही उपयोग करना, लेकिन कम से कम कहना परेशान है। शायद यह प्लगइन क्षेत्र है? या शायद ग्रहण प्रणाली में टेम्पलेट सिस्टम में एक बदलाव? – Casper

+0

मुझे इससे बेहतर तरीका नहीं मिला है। इसके अलावा, लूप के अंदर एक विधि को कॉल करना महंगा होगा यदि int (= i = 0; i

+1

सबसे अच्छा जवाब: http://stackoverflow.com/a/17591263/2650097 – Kranach

0

जहां तक ​​मुझे पता है कि ग्रहण आपके द्वारा वर्णित तरीके से इसका समर्थन नहीं करता है।

यदि ग्रहण सही चर नहीं पाता है तो आप फ़ोरैच टेम्पलेट में प्लेसहोल्डर्स के माध्यम से फिर से चलाने के लिए टैबलेट कुंजी का उपयोग कर सकते हैं। इष्टतम बिंदु ग्रहण पर आपको उन पुनरावृत्तियों की एक सूची दिखाएगी जिन्हें आप चुन सकते हैं।

0

आप शायद ग्रहण में ऐसा नहीं कर सकते हैं, लेकिन for टाइप करें और Ctrl-Space पर दो बार दबाएं, आप कोड टेम्पलेट मेनू पॉप अप देखेंगे। फिर आप उचित स्थान पर functionWhichReturnsList() का चयन कर सकते हैं और ग्रहण बाकी कर देगा।

कॉल समारोह और एक स्थानीय चर वापसी मान पकड़े बनाने के लिए Ctrl-1 का उपयोग करें::

List<TypeOfItemsInList> list = functionWhichReturnsList() 

प्रकार सामने [Ctrl-अंतरिक्ष

8

अद्यतन

मैं हाल ही में है कि पोस्टफ़िक्स कोड पूर्णता (https://github.com/trylimits/Eclipse-Postfix-Code-Completion) प्रदान करता है ग्रहण प्लगइन पाया। यह वह जगह है कि यह कैसे foreach पाश के लिए काम करता है:

enter image description here

बगल में, प्लगइन प्रदान करता है और अधिक उपयोगी प्रतियोगिताओं :)

अद्यतन:

ग्रहण 4.4 What's New in Luna (JDT) में एक QuickFix के लिए जोड़ा गया था इस मुद्दे।इसका उपयोग सरणी, संग्रह और मानचित्र (कुंजी सेट और मान) के लिए भी किया जा सकता है।

enter image description here

ग्रहण के लिए 4.4 से पहले:

मैं भी यही समस्या आ रही है लेकिन मैं एक समाधान खोजने के लिए सक्षम नहीं था। इसलिए, इस पल के लिए मैं वांछित पाश प्राप्त करने के लिए निम्न चरणों का पालन करता हूं।

सामने [Ctrl-स्पेस] और foreach टेम्पलेट का चयन करें, मैं निम्नलिखित मिल:

for (iterable_type iterable_element : iterable) { 

} 

तो मैं iterable पर एक डबल क्लिक करते हैं और विधि के साथ बदलना:

for (iterable_type iterable_element : functionWhichReturnsList()) { 

} 

अगले चरण पर बस functionWhichReturnsList() पर क्लिक करें और Ctrl-1 दबाएं। ग्रहण iterable_element को TypeOfItemsInList में बदलने का सुझाव देगा।

for (TypeOfItemsInList iterable_element : functionWhichReturnsList()) { 

} 

अब, तुम बस iterable_element के लिए एक उचित नाम खोजने की जरूरत है: आप अंत में मिलता चाहते हैं तो यह है। बस उस पर डबल क्लिक करें और टाइपिंग शुरू करें।

+0

धन्यवाद। यह ग्रहण मंगल ग्रह पर काम करता है! – lmo

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