查找返回类型为String的方法

时间:2018-04-17 07:00:09

标签: pharo moose-technology

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

我已尝试使用该查询:

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

但这会以

停止
  

错误:" MessageNotUnderstood"

1 个答案:

答案 0 :(得分:0)

declaredType:是一个setter,因此您尝试更改declaredType,它应该是FAMIXType。因此MessageNotUnderstood。

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

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

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