【发布时间】:2010-09-27 13:39:12
【问题描述】:
调用“self class”有两个主要原因:要么是为了做用户空间的事情,比如调用静态方法、创建新对象或获取常量。或者是为了反省自己。我很想知道他们每个人发生的频率。
查询当前加载的 Pharo 代码库的最佳方法是什么?有内置工具吗,or should I use SOUL?
【问题讨论】:
调用“self class”有两个主要原因:要么是为了做用户空间的事情,比如调用静态方法、创建新对象或获取常量。或者是为了反省自己。我很想知道他们每个人发生的频率。
查询当前加载的 Pharo 代码库的最佳方法是什么?有内置工具吗,or should I use SOUL?
【问题讨论】:
打开浏览器,转到对象,选择#class 并点击“发件人”,将显示#class 的所有发件人。不过,这对于回答“每个事件发生的频率”并不是很好。
以更易于操作的形式获取相同呼叫站点的方法是使用Object allCallsOn: #class,它提供了发件人的集合。也许运行一些#select: 调用来找出一些数字?
或者使用重构浏览器:它有 FinderTool 之类的东西,可以根据 AST 结构进行搜索。
编辑:正如 mathk 指出的那样,有时 senders-of 将不起作用,因为特殊消息或内联消息。在该主题的 vm-dev 列表中有一个有趣的discussion。
【讨论】:
可帮助您自省系统中任何类/对象的内置工具有:系统浏览器、检查器和对象资源管理器。请参阅Squeak by Example 中的“在 Squeak 中开发”一章。您在那里找到的信息与 Pharo 相关。
【讨论】:
smalltalk 中没有静态方法。如果你不明白你不明白什么是类。
【讨论】: