2011-12-24 7 views
6

Aradım ve arandı. Squeak smalltalk'ta bir sınıf içinde bir dize nasıl aranır? Bir paketin içine ne dersin?

ben soru saçma değil Umut

IRC

gitti. Öyleyse, google'da arama yapmak için doğru dize hala çok beğenilecek

+0

FileOut hakkında biliyorum. Ama daha iyi bir yolu olmalı. – josinalvo

+0

Gerçek bir cevap değil, gerçek formda belirli yöntemleri yeniden yorumlama önerisi için http://squeak.preeminent.org/tut2007/html/035B.html adresine bakın. Bu gönderenleri arayarak kolayca bulabileceğiniz yöntem çağrıları. –

cevap

1

İşte size, '\' dizesini içeren DosFileDirectory uygulamasında tüm yöntemleri gösteren bir örnek.

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'. 

, bir paket arama arama bölümünü sarmak için:

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

yeniden düzenleme motoru ile bu tür soruları yanıtlayan oldukça kolaydır.

allCodeWithSlash := RBBrowserEnvironment new matches: '/' 

Oradan daha fazla olabilir kapsam arama, örneğin: Aşağıdaki kod sisteminde / tüm oluşumlarını bulur Bir sınıf içinde:

allCodeWithSlashInPackage open 

: Bir UI yüklenen varsa

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

, bu arama sonuçlarında herhangi bir tarayıcıyı açabilirsiniz:

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

Veya paket içerisinde

OmniBrowser kullanıyorsanız, Refactoring kapsamı menüsünden herhangi bir kod yazmadan da bu kapsamları oluşturabilir ve gezinebilirsiniz.

İlgili konular