728x90
Result Builder
자연스럽고 선언적인 방식으로 목록이나 트리와 같은 중첩된 데이터를 만들기 위한 도메인별 언어(DSL)를 구현할 수 있게 해 준다.
Class, Struct, Enum 타입 등에 사용할 수 있다.
Result Builder Method
- static func buildBlock(_ components: Component...) -> Component
- 부분 결과의 배열을 하나의 결과로 결합한다.
- static func buildPartialBlock(first: Component) -> Component
- first 요소로부터 부분 결과 요소를 만든다.
- buildBlock(_:)와 비교하면, 다른 수의 인수를 처리하는 오버헤드를 줄인다.
- static func buildPartialBlock(accumulated: Component, next: Component) -> Component
- 축적된(accumulated) 요소와 새로운 구성 요소와 결합하여 부분 결과 요소를 만든다.
- reduce와 비슷한 맥락
- static func buildOptional(_ component: Component?) -> Component
- 옵셔널 부분 요소로부터 부분 요소를 만든다.
- else 구문을 포함하지 않는 if 조건문을 만들기 위해 사용한다.
- static func buildEither(first: Component) -> Component
- 조건에 따라 값이 달라지는 부분 결과 요소를 만든다.
- switch, if-else를 지원하기 위해 사용한다.
- static func buildEither(second: Component) -> Component
- 위 동
- static func buildArray(_ components: [Component]) -> Component
- 부분 결과의 배열에서 부분 결과 요소를 만들기 위해 사용한다.
- for 반복문을 지원한다.
- static func buildExpression(_ expression: Expression) -> Component
- 표현식(expression)으로부터 부분 결과를 만들기 위해 사용한다.
- 예를 들어, 표현식을 내부 타입으로 변환하는 등 전처리를 수행하거나, 타입 추론을 위한 추가 정보를 제공하기 위해 사용할 수 있다.
- static func buildFinalResult(_ component: Component) -> FinalResult
- 부분 요소로부터 최종 결과를 만든다.
- 이 메서드를 부분 혹은 최종 결과에 대해 다른 타입을 사용하는 result builder의 일부로 구현하거나 결과를 반환하기 전에 다른 후처리를 수행할 수 있다.
- static func buildLimitedAvailability(_ component: Component) -> Component
- 가용성 검사를 수행하는 compiler-control 외부에서 타입 정보를 전달하거나, 제거하는 부분 요소를 만든다.
- 이 메소드를 사용하여 조건부 분기마다 다른 타입 정보를 지울 수 있다.
참고
728x90
'Swift' 카테고리의 다른 글
Swift: Attributes (0) | 2024.08.22 |
---|---|
Swift: Network 프레임워크 (0) | 2024.08.17 |
Swift: 이벤트 큐, 이벤트 핸들러 (0) | 2024.08.12 |
Swift: Async, Await, Thread (0) | 2024.08.12 |
Swift: OperationQueue (0) | 2024.08.12 |