1

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

我尝试使用查询:

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

但这停止了

错误:“消息未理解”

4

1 回答 1

1

declaredType:是一个二传手,所以你试图改变声明的类型,它应该是一个FAMIXType. 因此MessageNotUnderstood。

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

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

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

于 2018-04-17T09:39:31.073 回答