2012-08-07 10 views
7

ग्रहण में, इस तरह की एक पंक्ति के बाद:एक्लिप्स में कहीं भी "लूप के लिए" सामग्री सहायता कैसे प्राप्त करें?

सूची सूची = नया ArrayList();

कई विकल्प यह "पाश के लिए" को पूरा करने में मदद कर सकते लाएगा "के लिए" बस के नीचे, और "Ctrl-Space" (डिफ़ॉल्ट रूप से), के बाद लेखन: assist

लेकिन अगर चर "सूची "यहां से अब तक घोषित किया जाता है (उदाहरण के लिए एक वर्ग के क्षेत्र के रूप में) जो सीधे इस संदर्भ से पता नहीं लगाया जा सकता है, या वहाँ कई सूचियाँ घोषित कर रहे हैं, तो सहायता अच्छी तरह से काम नहीं करता है:

not work @@ विभाजन रेखा - -

enter image description here

कुछ मामलों में, ग्रहण सहायता कर सकता है, लेकिन सदस्य चर के लिए काम नहीं करता है। जैसे मैन्युअल रूप से टाइप "एक और" और बाद ENTER ":" ग्रहण के लिए राजी नहीं था इसके बारे में अनुमान लगाना ....

(पी एस व्यावहारिक मामला:

ऑटो अनुमान लगाया

auto guessed

प्रवेश किया नाम चाहते थे, और ENTER, अच्छा काम करता है

entered wanted name, and ENTER, works great)

है किसी को भी वें बनाने के लिए किसी भी टिप है ऐसे परिदृश्यों के तहत सहायता कार्य है?

+1

यह अच्छी तरह से काम करता है: क्योंकि संदर्भ से कुछ भी अनुमानित नहीं किया जा सकता है, यह एक foreach ब्लॉक कंकाल उत्पन्न करता है और आपको उन हिस्सों को भरने देता है जो अनुमान लगा सकते हैं। –

+0

कृपया # 2 और # 3 तस्वीर देखें। कुछ मामलों में, ग्रहण सहायता कर सकता है, लेकिन सदस्य चर के लिए काम नहीं करता है। जैसे मैन्युअल रूप से "दूसरा" टाइप करें और ":" ने ग्रहण के बारे में अनुमान लगाने के लिए राजी नहीं किया .... –

उत्तर

3

क्या मैं आमतौर पर हल करने के लिए सामग्री के साथ पाश के लिए पीछा कर रहा है की सहायता करते हैं:

  • संग्रह चर है कि अब तक ऊपर घोषित किया जाता है टाइप करके एक स्थानीय चर बना सकते हैं और अर्धविराम:

    list; 
    
  • प्रेस Ctrl + 2 L

  • ग्रहण एक नई स्थानीय परिवर्तनीय घोषणा उत्पन्न करता है जो इस तरह दिखता है:

    List list2 = list; 
    
  • प्रकार मेरी foreach और Ctrl + अंतरिक्ष निम्नलिखित हो रही के साथ स्वत: पूर्ण: पाश घोषणा और प्रेस Alt + Shift + के लिए में List2 पर

    List list2 = list; 
    for (Object object : list2) { 
    } 
    
  • जगह कर्सर मैं जो इनलाइन चर के लिए खड़ा है ।

  • यह परिणाम आप जो हासिल करना चाहते हैं। प्रयास कुछ अभ्यास करने के बाद कम से कम है:

    for (Object object : list) { 
    } 
    
+0

धन्यवाद। मैं अभी इसी तरह कर रहा हूँ। –

5

मैंने इसे स्वयं नहीं किया है, लेकिन कोड टेम्पलेट परिभाषा को देखें। उदाहरण के लिए, foreach कोड टेम्पलेट वरीयताओं में परिभाषित किया गया है -> जावा -> संपादक -> इस प्रकार टेम्पलेट:

for (${iterable_type} ${iterable_element} : ${iterable}) { 
    ${cursor} 
} 

सूचना चर इस्तेमाल किया जा रहा:

Definition of foreach

परिभाषा इस प्रकार है जैसे iterable_type

अब this ग्रहण मदद पृष्ठ पर एक नज़र डालें।

एक चर वहाँ ${id:localVar(type[,type]*)} जो वर्णन किया गया है कहा जाता है के रूप में निम्नानुसार है:

Evaluates to a local variable or parameter visible in the current scope that is a subtype of any of the given type. If no type is specified, any non-primitive local variable matches. 
${array} is a shortcut for ${array:localVar(java.lang.Object[])}, but also matches arrays of primitive types. 
${collection} is a shortcut for ${collection:localVar(java.util.Collection)}. 
${iterable} is a shortcut for ${iterable:localVar(java.lang.Iterable)}, but also matches arrays. 

ही का एक स्क्रीनशॉट:

Variable

मुझे विश्वास है कि अगर आप से क्षेत्र में वृद्धि करना चाहता था जो foreach टेम्पलेट इसके चर का अनुमान लगाता है, आपको उचित चर के साथ टेम्पलेट परिभाषा को संपादित करना पड़ सकता है।

अगर यह मदद करता है तो मुझे बताएं। दुर्भाग्यवश, मैंने पहले कोड टेम्पलेट्स को संपादित करने में शामिल नहीं किया है, इसलिए एक ठोस उदाहरण देने में सक्षम नहीं होगा।

+1

धन्यवाद। इसके बारे में और अधिक शोध किया लेकिन 100% सही समाधान नहीं मिला। एक वर्कअराउंड http://stackoverflow.com/a/2358355/367860 किसी भी तरह से मदद करता है। –

13

मैं आशुतोष जिंदल के टिप पीछा किया और मुझे लगता है कि काम करता है (केपलर रिलीज के साथ परीक्षण किया गया) टेम्पलेट कॉन्फ़िगर करने में कामयाब रहे। संदेश यह है:

for (${iterable_type:elemType(iterable)} ${iterable_element:newName(iterable_type)} : ${iterable:var(java.lang.Iterable)}) { 
    ${cursor} 
} 

मुख्य बिंदु टेम्पलेट परिभाषा वर (Eclipse docs स्पष्ट रूप से यह समझाने) के localVar बदलने के लिए किया गया था।

इसका उपयोग कैसे करें:

  1. प्रिंट टेम्पलेट का नाम (डिफ़ॉल्ट टेम्पलेट की foreach) और हिट दर्ज करें। टेम्पलेट का उपयोग एक्लिप्स द्वारा चयनित डिफ़ॉल्ट संग्रह के साथ किया जाएगा (नवीनतम संग्रह घोषित)
  2. संग्रह तत्व पर कूदने के लिए दो बार टैब दबाएं। लागू होने वाले सभी पुनरावर्तनीय संग्रहों के साथ आपको ड्रॉप डाउन सूची मिल जाएगी।
  3. वांछित संग्रह का चयन करने के लिए ऊपर/नीचे तीरों का उपयोग करें, एंटर दबाएं। ग्रहण तत्व प्रकार और नाम (बहुत ठंडा) समायोजित करेगा।

Click for the screenshot

यह लगभग रूप में Intellij टेम्पलेट्स के रूप में अच्छा काम करता है। कमियां हैं:

  • टेम्पलेट सरणियों शामिल नहीं है (जैसा कि foreach टेम्पलेट डिफ़ॉल्ट के खिलाफ)। सरणी के लिए आपको एक और टेम्पलेट परिभाषित करना होगा।
+0

+1 - ठीक उसी तरह काम करता है जैसा कि – Rekin

+0

बहुत बढ़िया है, इसमें रास्ता अधिक अपवर्त होना चाहिए। मैं इसके लिए समाधान ढूंढने के लिए संघर्ष कर रहा था और बस अपना खुद का लिखने वाला था, लेकिन सौभाग्य से यहां समाप्त हो गया और अपना समय बचाया। – Kranach

+0

क्रैनच, अगर आपको मेरा जवाब पसंद है, तो कृपया इसे ऊपर उठाएं। – summerian

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