2011-12-24 14 views
6

मैंने खोज की, और खोज की।स्क्वाक स्मॉलटॉक में कक्षा के अंदर एक स्ट्रिंग की खोज कैसे करें? पैकेज के अंदर कैसे?

मैं आईआरसी

के पास गया

आशा है कि प्रश्न मूर्खतापूर्ण नहीं है। यदि ऐसा था, तो Google पर खोजने के लिए सही स्ट्रिंग की भी सराहना की जाएगी

+0

मुझे फ़ाइलऑट के बारे में पता है। लेकिन एक बेहतर तरीका होना चाहिए – josinalvo

+0

वास्तविक उत्तर नहीं है, लेकिन वास्तविक रूप के रूप में विशेष तरीकों पर पुनर्विचार करने के लिए अपने आप को टिप्पणियां छोड़ने के लिए http://squeak.preeminent.org/tut2007/html/035B.html देखें। विधि कॉल जो आप आसानी से उन प्रेषकों की तलाश करके पा सकते हैं। –

उत्तर

1

यहां एक उदाहरण है जो आपको स्ट्रिंग '\' युक्त डॉसफ़ाइल डायरेक्टरी में सभी विधियों को दिखाता है।

aString := '\\'. 
class := DosFileDirectory. 
methodsContainingString := class methodDictionary values select: [:method | 
    method hasLiteralSuchThat: [:lit | 
     (lit isString and: [lit isSymbol not]) and: 
      [lit = aString]]]. 
messageList := methodsContainingString collect: [ :e | MethodReference new setStandardClass: class methodSymbol: e selector ]. 

SystemNavigation new 
    browseMessageList: messageList 
    name: 'methods containing string'. 

एक पूरे पैकेज खोजने के लिए, में खोज हिस्सा लपेट:

package := PackageOrganizer default packageNamed: packageName ifAbsent: [ self error: 'package doesn't exist' ]. 
package classesAndMetaClasses do: [ :class | ... ] 
2

रिफैक्टरिंग इंजन के साथ इस तरह के प्रश्नों का उत्तर देना काफी आसान है।

allCodeWithSlash := RBBrowserEnvironment new matches: '/' 

वहां से आप की और जांच कर दायरे खोज करें, जैसे: निम्नलिखित कोड प्रणाली में / की सभी घटनाओं पाता है करने के लिए एक वर्ग के अंदर:

allCodeWithSlashInClass := allCodeWithSlash forClasses: (Array with: DosFileDirectory) 

या एक पैकेज के अंदर:

allCodeWithSlashInPackage open 

:

allCodeWithSlashInPackage := allCodeWithSlash forPackageNames: (Array with: 'Files') 

आप एक यूआई लोड किया है, तो आप इन खोज परिणामों में से किसी पर एक ब्राउज़र खोल सकते हैं यदि आप OmniBrowser का उपयोग करते हैं, तो आप रीफैक्टरिंग स्कोप मेनू के माध्यम से किसी भी कोड टाइप किए बिना इन स्कॉप्स को भी बना सकते हैं और नेविगेट कर सकते हैं।

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