【问题标题】:How do I find which messages an object understands?如何找到对象理解的消息?
【发布时间】:2014-06-05 21:16:53
【问题描述】:

在 Pharo 中,我知道整数可以理解消息 to:。工作区提供建议:

但如果我从工作区检查一个整数,它并没有提到to:

搜索 SmallInteger 也不会在系统浏览器中显示任何内容:

如何发现我可以向对象发送哪些消息?理想情况下,我也想看看他们的源代码。

【问题讨论】:

    标签: reflection smalltalk pharo


    【解决方案1】:

    重新审视您的问题,我注意到,在您的上一个屏幕截图中,您没有搜索 class SmallInteger,而是搜索 package命名为SmallInteger。这个包不存在。

    但您可能想搜索类SmallInteger。这是通过键盘快捷键 Cmd-F Cmd-C (在 Linux 上是 Alt-F Alt-C ) 或通过在 Nautilus 系统浏览器的类面板的上下文菜单中选择 Find Class...。这使您可以浏览在 SmallInteger 中实现的方法。如果您逐步了解超类,您可以查看SmallInteger 实例所理解的所有消息。

    【讨论】:

    • 请注意,如果您只是键入“1 browse”并执行此操作,您将打开如上所示的层次结构浏览器。或者,如果您输入“1”检查它,请从检查器中打开一个类浏览器。
    • 另外,您可以使用聚光灯查找课程:shift+enter 然后输入您要查找的课程名称。
    【解决方案2】:

    每个类都理解消息allSelectors
    allSelectors 回答一组接收者实例可以理解的所有消息选择器。这包括接收者的方法字典和它的超类的方法字典中的所有消息选择器。

    所以尝试打印或更好,检查:

    1 class allSelectors.
    

    【讨论】:

      【解决方案3】:

      此外,您可以在任意位置键入课程名称,选择它,然后按 command+B(浏览)。这将在该类上打开一个浏览器。

      【讨论】:

        猜你喜欢
        • 2022-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-18
        • 2019-06-21
        • 2018-10-19
        • 2011-11-05
        相关资源
        最近更新 更多