programing

인스턴스 메서드 내에서 형식 메서드 호출

nasanasas 2020. 12. 10. 20:28
반응형

인스턴스 메서드 내에서 형식 메서드 호출


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

반응형