簡體   English   中英

如何獲得協議中的所有方法?

[英]How can I get all the methods in a Protocol?

如何在smalltalk / squeak / pharo中獲取給定協議中所有(類)方法的集合?

我正在嘗試收集一組方法返回的值。 我不想將方法存儲在實例或類變量中。 所以我雖然可以將它們添加到協議中並以這種方式“標記”它們。

謝謝。

在Pharo中,您正在尋找的方法是ClassDescription>>allMethodsInCategory: ::

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

要在類端協議中查找方法,只需發送到元類:

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

但是,您可能需要考慮的另一個解決方案是使用pragma標記您的方法。 有關該方法的詳細信息,請參閱Pragma類的注釋。 它的優點是其他包可以自由添加屬於您的組的方法(需要在*協議中),並且該pragma也可以用於存儲其他元數據(例如,評估順序)。

NB。 選擇器allMethodsInCategory:已在Pharo 3.0及更高版本中棄用,支持allSelectorsInProtocol:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM