모든 수퍼 클래스 (allSuperclass 메소드)의 목록을 검사하는 메소드를 작성하고 그 중 하나가 특정 이름의 classVariable을 갖는 경우 'true'를 리턴합니다. 그들 중 누구도 그것을 가지고 있지 않다면 거짓을 돌려 줄 것입니다. 어떻게해야합니까?수퍼 클래스 중 하나에 특정 이름의 classVariable이 있는지 확인하는 방법은 무엇입니까?
3
A
답변
3
classVarNames
은 클래스 변수 이름의 컬렉션을 반환하는 메서드입니다. 특별한
superclassesHaveNoClassVar: name
^self allSuperclasses noneSatisfy: [:class |
class classVarNames includes: name]
아무것도 : 당신이 행동 클래스에이 방법을 추가 할 것입니다 경우
예를 들어, 당신은 당신이 요구하고 기능성을 얻어야한다. allSuperclasses
을 가져 와서 includes
변수 중 원하는 변수가 name
인 경우 classVarNames
이 아닌지 확인하십시오.
0
그냥 보내
superclass allClassVarNames includes: #AClassVariableName
클래스에 질문.
가 당신은 사용할 수 있습니다 : 행동 whichClassDefinesClassVar에서 다음과 같은 방법이있다, 가족 이죠에서
superclassesIncludeClassVariable: aSymbol
^self superclass allClassVarNames includes: aSymbol
0
:이에 대해 별도의 방법을 원하는 경우에 UKO는 제안 당신은 Behavior
의 프로토콜에 allClassVarNames
옆에, 배치 할 수 그것을 좋아해 :
^(MyClass whichClassDefinesClassVar: #ThisVariableName) notNil