8

smalltalk/squeak/pharo で特定のプロトコルのすべての (クラス) メソッドのコレクションを取得するにはどうすればよいですか?

メソッドのグループから返される値を収集しようとしています。メソッドをインスタンスまたはクラス変数に格納する必要はありません。したがって、それらをプロトコルに追加して、この方法で「マーク」することができると思いました。

ありがとう。

4

1 に答える 1

7

Pharo で探しているメソッドは次のClassDescription>>allMethodsInCategory:とおりです。

| selectors |
selectors := MyClass allMethodsInCategory: #'protocol name'.

クラス側のプロトコルでメソッドを見つけるには、代わりにメタクラスに送信します。

selectors := MyClass class allMethodsInCategory: #'protocol name'.

ただし、検討したい別の解決策は、代わりにプラグマを使用してメソッドをマークすることです。Pragmaそのアプローチの詳細については、クラスのコメントを参照してください。これには、他のパッケージがあなたのグループに属するメソッド (* プロトコルである必要があります) を自由に追加できるという利点があり、プラグマを使用して他のメタデータ (評価順序など) も保存できるという利点があります。

注意。セレクターallMethodsInCategory:は Pharo 3.0 以降で非推奨になり、allSelectorsInProtocol:

于 2010-06-07T22:49:25.400 に答える