Pharo和Squeak Smalltalk:在包中列出未实现的方法?
如何在一个包中列出所有未实现的方法?假设该方法应该在该包中实现,而不是在其他包中实现(例如在包外的超类或对象中) 编辑:是的,我想知道“未实现的已发送消息”,但将分析限制在一个特定的给定包内,例如:Pharo和Squeak Smalltalk:在包中列出未实现的方法?,smalltalk,squeak,pharo,Smalltalk,Squeak,Pharo,如何在一个包中列出所有未实现的方法?假设该方法应该在该包中实现,而不是在其他包中实现(例如在包外的超类或对象中) 编辑:是的,我想知道“未实现的已发送消息”,但将分析限制在一个特定的给定包内,例如: FooPackage unimplementedMessageSends。我还没有完全测试过这一点,所以您可能需要对其进行一些调整以满足您的要求,但从我对您的问题的理解来看,您可能想要这样的东西: | allMethodsSent allMethodsImplemented | allMethods
FooPackage unimplementedMessageSends。我还没有完全测试过这一点,所以您可能需要对其进行一些调整以满足您的要求,但从我对您的问题的理解来看,您可能想要这样的东西:
| allMethodsSent allMethodsImplemented |
allMethodsSent := IdentitySet new.
allMethodsImplemented := IdentitySet new.
(SystemOrganization listAtCategoryNamed: #'Collections-Arrayed')
do: [:eachClassName |
(Smalltalk at: eachClassName) methodDictionary valuesDo: [:eachMethod |
allMethodsSent addAll: eachMethod messages.
].
allMethodsImplemented addAll: (Smalltalk at: eachClassName) selectors
].
^allMethodsSent
removeAllFoundIn: allMethodsImplemented;
yourself
希望这能帮助您入门,如果您需要调整它,请查看类行为
(查看您可以使用什么,而不是更改它!)、编译方法
、以及系统组织
显然,这个示例使用了类别(我假设这就是您所说的包?)“Collections Arrayed”,但您当然可以对其进行调整,使其成为一个方法参数,例如:
MyUtilClass unimplementedMessageSendsFor: aCategorySymbol
我还没有完全测试过这一点,所以您可能需要对其进行一些调整以满足您的需求,但从我对您的问题的理解来看,您可能想要这样的东西:
| allMethodsSent allMethodsImplemented |
allMethodsSent := IdentitySet new.
allMethodsImplemented := IdentitySet new.
(SystemOrganization listAtCategoryNamed: #'Collections-Arrayed')
do: [:eachClassName |
(Smalltalk at: eachClassName) methodDictionary valuesDo: [:eachMethod |
allMethodsSent addAll: eachMethod messages.
].
allMethodsImplemented addAll: (Smalltalk at: eachClassName) selectors
].
^allMethodsSent
removeAllFoundIn: allMethodsImplemented;
yourself
希望这能帮助您入门,如果您需要调整它,请查看类行为
(查看您可以使用什么,而不是更改它!)、编译方法
、以及系统组织
显然,这个示例使用了类别(我假设这就是您所说的包?)“Collections Arrayed”,但您当然可以对其进行调整,使其成为一个方法参数,例如:
MyUtilClass unimplementedMessageSendsFor: aCategorySymbol
这个问题我仔细读了好几遍,不知道你在问什么。也许增加一个具体的例子会有帮助,我也不理解这个问题。也许作者想知道发送的未实现的消息?或者他想知道有未定义子类职责的方法?这两个问题都可以在作为重构引擎一部分的CodeCritics中找到。我仔细阅读了好几遍这个问题,不知道你在问什么。也许增加一个具体的例子会有帮助,我也不理解这个问题。也许作者想知道发送的未实现的消息?或者他想知道有未定义子类职责的方法?这两个问题都可以在作为重构引擎一部分的CodeCritics中找到。