簡體   English   中英

如何查找哪個類在Pharo中實現方法?

[英]How do I lookup which class implements a method in Pharo?

新手在這里,通過“Pharo by Example” 本書提到了EllipseMorph new openInWorld一個例子, EllipseMorph new openInWorld結果調用了Morph openInWorld ,而EllipseMorph defaultColor是一個被覆蓋的消息:我如何使用系統瀏覽器或其他東西來解決這個問題?

通常的查找方法方法只能在緊接選的類中查找匹配項。 通常可以查找哪個類會響應(比方說) Foo bar嗎?

更新 :感謝所有建議(Finder,Spotter); 調試器是我遇到過的工具中最令人大開眼界的!

Smalltalk提供了許多可以幫助您解決此問題的工具和瀏覽器。 如果您已經知道消息的名稱,則可以:

  • 使用spotter( Shift + Enter )鍵入並查看所有發件人和實施者,然后選擇一個進行瀏覽。
  • 在瀏覽器中查看方法時,單擊方法名稱左側的綠色上/下三角形小三角形,分別指示層次結構的上/下,以打開它們上的瀏覽器。
  • 在任何地方選擇消息的名稱(幾乎)並鍵入CMD + M以查看i m plementors和CMD + N以查看序列

在這種情況下,您還可以在游樂場中鍵入EllipseMorph new openInWorld ,然后從菜單中選擇Debug-It 這將打開一個調試器,選擇new 如果單擊進入 ,則頂行將更改為EllipseMorph class(Behavior) new 這表明此處使用了來自Behaviornew 如果繼續 (2次),步進,你會看到它更改為EllipseMorph(BorderedMorph) initialize 只需跟蹤發送的消息跟蹤,您就可以看到所有內容的實現位置。

要添加到Stephan的答案(+1),最簡單的方法之一,特別是如果您是Smalltalk的新手並且更喜歡使用GUI,就是使用Finder工具。 只需左鍵單擊背景上的任意位置(相當於Pharo圖像中的桌面),然后選擇Tools > Finder

在Pharo中打開Finder工具

接下來,在搜索字段中鍵入方法的名稱,例如openInWorld (確保在右下方的下拉列表中選擇“選擇器”)並按Enter鍵

使用Pharo中的Finder工具

然后,您可以瀏覽包含搜索字符串的所有方法(注意它自動是通配符搜索)和實現它們的類。 底部的面板顯示您選擇的實現,上下文菜單為您提供了更多選項,例如瀏覽您選擇的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM