【问题标题】:Proper way to get all installed methods in Pharo在 Pharo 中获取所有已安装方法的正确方法
【发布时间】:2016-10-12 09:42:54
【问题描述】:

有时您想分析图像中的所有方法。一种方法是使用CompiledMethod allInstances。但是这样做很危险,因为

  1. 您最终可能会使用尚未进行垃圾回收的旧方法。
  2. 出于技术原因,可能存在匿名类或其他实例的编译方法。

【问题讨论】:

    标签: methods reflection pharo idioms


    【解决方案1】:

    独立于方言的表达式是

    ProtoObject withAllSubclasses gather: [:cls |
      cls methodDictionary values asArray,
        cls class methodDictionary values asArray]
    

    【讨论】:

      【解决方案2】:

      我想到的一件事是:

      RPackage organizer packages flatCollect: #methods 
      

      【讨论】:

      • 顺便说一句,该方法的评论建议改用RPackage organizer,尽管我从未遇到过您的变体的问题。
      【解决方案3】:

      我建议使用SystemNavigation,这是为此设计的类:

      SystemNavigation default allMethodsSelect: [:m | true]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-07
        • 2011-03-13
        • 2011-08-03
        • 1970-01-01
        • 2019-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多