【问题标题】:Find methods with return type String查找返回类型为 String 的方法
【发布时间】:2018-04-17 07:00:08
【问题描述】:

我尝试创建一个查询来获取具有特定返回类型的所有方法。查看FAMIXMethodFAMIXBehavioralEntity 的定义,我认为declaredType: 是FAMIXMethodGroup 上此查询的正确方法。

我尝试过使用查询:

self select: [ :each | each declaredType: String ]

但这以

结束

错误:“MessageNotUnderstood”

【问题讨论】:

    标签: pharo moose-technology


    【解决方案1】:

    declaredType: 是一个 setter,因此您正在尝试更改声明的类型,它应该是 FAMIXType。因此 MessageNotUnderstood。

    一种可能的方法是获取声明的类型(这是FAMIXType 的(子)实例)并请求smalltalkClass。请注意,declaredType 可能不存在。

    self select: [ :each |
        each hasDeclaredType and: [
            each declaredType smalltalkClass isKindOf: String class ] ].
    

    也许 Moose Query 可以设计一个更简单的方法,但我对此并不熟悉。

    【讨论】:

    • 改用each declaredType inheritsFrom: String#isKindOf: 消息通常用于实例。
    猜你喜欢
    • 2021-11-25
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多