복붙노트

[SWIFT] 스위프트 - 이름은 같지만 다른 매개 변수를 함수에 대한 참조를 얻을

SWIFT

스위프트 - 이름은 같지만 다른 매개 변수를 함수에 대한 참조를 얻을

해결법


  1. 1.토토는 이름은 같지만 서로 다른 서명이 두 가지 방법을 가지고 있기 때문에, 당신은 당신이 원하는 일을 지정해야합니다

    토토는 이름은 같지만 서로 다른 서명이 두 가지 방법을 가지고 있기 때문에, 당신은 당신이 원하는 일을 지정해야합니다

    let f1 = aToto.toto as () -> Void
    let f2 = aToto.toto as (String) -> Void
    
    f1()         // Output: f1
    f2("foo")    // Output: f2
    

    대안 (@Antonio 올바르게 바와 같이)

    let f1: () -> Void     = aToto.toto
    let f2: String -> Void = aToto.toto
    

    당신은 클래스의 인스턴스로 복용 카레 기능이 필요한 경우 다음 첫 번째 인수 같은 방법으로 진행할 수 있습니다 만 서명은 다르다 (질문에 대한 @Antonios 주석을 비교)

    let cf1: Toto -> () -> Void       = aToto.dynamicType.toto
    let cf2: Toto -> (String) -> Void = aToto.dynamicType.toto
    
    cf1(aToto)()         // Output: f1
    cf2(aToto)("bar")    // Output: f2
    
  2. from https://stackoverflow.com/questions/28345950/swift-get-reference-to-a-function-with-same-name-but-different-parameters by cc-by-sa and MIT license