我想编写一个方法来检查所有超类的列表( allSuperclass 方法),如果其中一个具有具有特定名称的 classVariable,则返回“true”。如果他们都没有它,它将返回 false。我该怎么做呢?
问问题
104 次
3 回答
3
classVarNames
是一种返回类变量名称集合的方法。
例如,如果您将此方法添加到Behavior类中,您应该获得您要求的功能:
superclassesHaveNoClassVar: name
^ self allSuperclasses noneSatisfy: [:class |
class classVarNames includes: name]
没什么特别的。只需allSuperclasses
检查并检查它们是否都不是所需的includes
变量。name
classVarNames
于 2013-08-25T03:45:43.200 回答
0
只需发送:
superclass allClassVarNames includes: #AClassVariableName
到有问题的班级。如果你想要一个单独的方法,你可以按照 Uko 的建议将它allClassVarNames
放在以下协议中Behavior
:
superclassesIncludeClassVariable: aSymbol
^ self superclass allClassVarNames includes: aSymbol
于 2013-08-25T09:48:59.217 回答
0
在 Squeak 中,在 Behavior whichClassDefinesClassVar 中有以下方法:
您可以这样使用它:
^(MyClass whichClassDefinesClassVar: #ThisVariableName) notNil
于 2013-09-01T13:30:40.253 回答