2016-01-28 2 views
5

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

private String myField; 
... 
public myClassConstructor() { 
    ... 
    myField = res.getString(R.string.my_string_id); 
    ... 
} 

की तरह कोड मैं इस

@BindString(R.string.my_string_id); 
String myField; 
... 
public myClassConstructor() { 
    ... 
    ... 
} 

परिणाम अभिव्यक्ति चला गया है में चाहते हैं, और क्षेत्र वर्ष अभिव्यक्ति के आधार पर टिप्पणी की जाती है।

क्या इस तरह की खोज करना और इंटेलिजे की संरचनात्मक प्रतिस्थापन में प्रतिस्थापित करना संभव है? ऐसा लगता है कि यह मामले को गर्व से संभाल नहीं लेता है जब ब्याज की रेखाएं निकट नहीं होती हैं और संरचनात्मक रूप से विभिन्न स्थानों पर होती हैं। मैंने कक्षा टेम्पलेट पर इसे आधार देने की कोशिश की, और $ स्टेटमेंट $ (0-असंबद्ध घटनाओं) का उपयोग किया लेकिन यह मेरे लिए काम नहीं करता था।

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

उत्तर

2

जबकि Search structurally किसी भी तरह से काम कर रहा है और खोज क्वेरी बनाना संभव है, replace structuraly "शिकारियों" के लिए "एलियंस" द्वारा बनाए गए टूल हैं। मुझे उम्मीद है कि इंटेलिजे टीम इस सुविधा की समीक्षा करेगी और इसे और अधिक उपयोगी/समझने योग्य बना देगा।

मैं Replace structurally क्वेरी बनाने के लिए स्वयं से प्रयास कर रहा था, लेकिन मैं केवल Search structurally खंड बना सकता था।

मैंने उदाहरण के लिए इसे मॉकिटो लिब के साथ किया है।

Structural search dialog

महत्वपूर्ण बिंदुओं यहाँ से एक {0, असीमित} को $SomeStatement1$ और $SomeStatement2$ न्यूनतम और अधिकतम गिनती के लिए डाल करने के लिए

enter image description here

और इस बिंदु से मैं आने के लिए कोशिश की है प्रतिस्थापन खंड के साथ, लेकिन यह विधि/फ़ील्ड घोषणा/वर्ग के दायरे को पूरी तरह से गड़बड़ कर रहा था।

उम्मीद है कि इससे मदद मिलती है।

+0

मैंने यह भी पाया है कि यह गड़बड़ मेरा कोड ऊपर, कभी-कभी इसे कहीं से अधिक हटा देना चाहिए, या एक नई कक्षा डालना चाहिए। यह बहुत सरल और स्थानीय खोज के लिए काम करना प्रतीत होता था। मैं उम्मीद कर रहा था कि कोई यह कह सके कि यह संभव नहीं है या यह है। यदि कोई भी ज्ञान निश्चित ज्ञान के साथ नहीं है, तो मैं इसे मानूंगा क्योंकि केवल देवताओं को पता है और यह शायद मैं जो भी चाहता हूं वह नहीं कर सकता। – arberg

0

ऐसा कुछ काम करना चाहिए।
खोजें टेम्पलेट:

class $Class$ { 
    $FieldType$ $FieldName$; 

    $Class$() { 
     $st1$; 
     $FieldName$ = res.getString($expr$); 
     $st2$; 
    } 
} 

चर:
st1 मिनट: 0 अधिकतम: असीमित
st2 मिनट: 0 अधिकतम: असीमित

रिप्लेसमेंट टेम्पलेट:

class $Class$ { 
    @BindString($expr$) 
    $FieldType$ $FieldName$; 

    $Class$() { 
     $st1$; 
     $st2$; 
    } 
} 
+0

प्रयास के लिए धन्यवाद। मुझे इस सवाल में शामिल होना चाहिए था, क्योंकि यह उन चीजों में से एक था जो मैंने कोशिश की थी, और यह काम नहीं करता है।मैं कुछ भी मेल नहीं खाता। जब मैंने इसके साथ खेला तो मुझे याद आती है कि वास्तव में कुछ प्रतिस्थापन हो रहा है, मुझे लगता है कि मैंने स्रोत-कोड को सरल बनाया है। हालांकि फिर यह पूरी तरह से प्रतिस्थापन गड़बड़ कर दिया। मैं इस मुद्दे को बंद करने के लिए उपर्युक्त उत्तर स्वीकार करूंगा। – arberg

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