반응형
인스턴스 메서드 내에서 형식 메서드 호출
Apple은 Type (Class) Methods Here에 대한 멋진 설명을 제공 합니다.
그러나 그들의 예는 다음과 같습니다.
class SomeClass {
class func someTypeMethod() {
// type method implementation goes here
}
}
SomeClass.typeMethod()
나는이 똑같은 예가 어디에서나 앵무새를 보았다.
그러나 내 클래스의 인스턴스 내에서 내 유형 메서드를 호출해야하며 계산되지 않는 것 같습니다.
나는 뭔가 잘못하고있는 것이 틀림 없다. 그러나 나는 애플이 아직 클래스 속성을 지원하지 않는다는 것을 알아 챘다. :(. 나는 물을 위해 드라이 웰에 갈 것인지 궁금하다.
다음은 내가 시도한 것입니다 (놀이터에서).
class ClassA
{
class func staticMethod() -> String { return "STATIC" }
func dynamicMethod() -> String { return "DYNAMIC" }
func callBoth() -> ( dynamicRet:String, staticRet:String )
{
var dynamicRet:String = self.dynamicMethod()
var staticRet:String = ""
// staticRet = self.class.staticMethod() // Nope
// staticRet = class.staticMethod() // No way, Jose
// staticRet = ClassA.staticMethod(self) // Uh-uh
// staticRet = ClassA.staticMethod(ClassA()) // Nah
// staticRet = self.staticMethod() // You is lame
// staticRet = .staticMethod() // You're kidding, right?
// staticRet = this.staticMethod() // What, are you making this crap up?
// staticRet = staticMethod() // FAIL
return ( dynamicRet:dynamicRet, staticRet:staticRet )
}
}
let instance:ClassA = ClassA()
let test:( dynamicRet:String, staticRet:String ) = instance.callBoth()
아무도 나를 위해 단서가 있습니까?
var staticRet:String = ClassA.staticMethod()
작동합니다. 매개 변수를 사용하지 않으므로 전달할 필요가 없습니다. 다음과 같이 ClassA를 동적으로 가져올 수도 있습니다.
스위프트 2
var staticRet:String = self.dynamicType.staticMethod()
스위프트 3
var staticRet:String = type(of:self).staticMethod()
Swift 3에서는 다음을 사용할 수 있습니다.
let me = type(of: self)
me.staticMethod()
참고 URL : https://stackoverflow.com/questions/24472399/calling-type-methods-within-an-instance-method
반응형
'programing' 카테고리의 다른 글
SQL Azure 데이터베이스에서 새 사용자를 만들려면 어떻게하나요? (0) | 2020.12.10 |
---|---|
Mac OSX에서 $ GOPATH를 설정할 수 없습니다. (0) | 2020.12.10 |
Intellij JAVA_HOME 변수 (0) | 2020.12.10 |
Android 애플리케이션 아키텍처-제안 된 모델은 무엇입니까? (0) | 2020.12.09 |
다른 할당자를 사용하는 STL 문자열 비교 (0) | 2020.12.09 |