2010-09-27 24 views

回答

3

打開瀏覽器,將對象,選擇#class和打擊「發件人」會告訴你#class的所有發件人。儘管回答「每個人出現的頻率」並不是很好。

得到同樣的調用點更可操作的形式方法是用Object allCallsOn: #class這給發件人的集合。也許運行一些#select:調用來找出一些數字?

或者使用重構瀏覽器:它有類似的東西FinderTool要根據AST結構。

編輯:mathk指出,有時-的發送者不會起作用,因爲特殊的信息或內嵌的消息。在主題的vm-dev列表上有一個有趣的discussion

+0

要小心#class可能是一個特殊的字節碼。因此,您可能無法使用「發件人」按鈕查找發件人,因爲CompiledMethod中沒有更多的#class文字。我不記得是否是這種情況,但同樣適用於內聯發送(#ifTrue:#ifFalse :, #and :, ...) – mathk 2010-10-11 21:32:05

+0

這是一個很好的觀點,mathk。再看看Squeak Trunk中的Object >>未來。這不是內聯的,而是在編譯時進行轉換(到#futureDo:at:args或#futureSend:args :.也可以看看Mariano Martinez Peck最近對vm-dev的探索,Squeak/Pharo的虛擬機和特殊發送。 – 2010-10-12 08:00:39

2

內置的工具可以幫助您內省系統中的任何類/對象:系統瀏覽器,檢查器和對象瀏覽器。請參閱Squeak by Example中的「發展中的吱吱聲」一章。您在那裏找到的信息與Pharo有關。

2

有沒有這樣的事情在Smalltalk的靜態方法。如果你不明白你不瞭解什麼課程。