programing

swift : 차단 선언과 같은 폐쇄 선언

cafebook 2023. 8. 1. 20:47
반응형

swift : 차단 선언과 같은 폐쇄 선언

우리는 Objective-C에서 아래와 같이 블록을 선언할 수 있습니다.

typedef void (^CompletionBlock) (NSString* completionReason);

저는 이것을 빨리 하려고 합니다. 그것은 오류를 일으킵니다.

func completionFunction(NSString* completionReason){ }
typealias CompletionBlock = completionFunction

오류: 선언되지 않은 '완료' 사용함수'

정의:

var completion: CompletionBlock = { }

어떻게 하는 거지?

업데이트:

@jtbandes의 답변에 따르면, 나는 다음과 같은 여러 인수로 종결을 만들 수 있습니다.

typealias CompletionBlock = ( completionName : NSString, flag : Int) -> ()

함수 유형의 구문은 다음과 같습니다.(in) -> out.

typealias CompletionBlock = (NSString?) -> Void
// or
typealias CompletionBlock = (result: NSData?, error: NSError?) -> Void
var completion: CompletionBlock = { reason in print(reason) }
var completion: CompletionBlock = { result, error in print(error) }

Swift 3+부터는 입력 유형 주변의 괄호만 필요합니다.

여기 빠른 마감에 대한 멋진 블로그가 있습니다.

다음은 몇 가지 예입니다.

변수로:

var closureName: (inputTypes) -> (outputType)

선택적 변수로:

var closureName: ((inputTypes) -> (outputType))?

유형 별칭:

typealias closureType = (inputTypes) -> (outputType)

언급URL : https://stackoverflow.com/questions/24133797/swift-closure-declaration-as-like-block-declaration

반응형