Skip to content

Latest commit

 

History

History
63 lines (45 loc) · 1.69 KB

@resultBuilder.md

File metadata and controls

63 lines (45 loc) · 1.69 KB

@resultBuilder

  • Swift 5.4에 도입된 Result builder를 사용하면 나란히 정렬 된 'build block'을 사용하여 결과를 빌드 할 수 있다
  • Result builder는 최종 결과로 결합되는 부분들을 모으기 위해 사용 됨

예제

  • 모든 result builder는 일종의 데이터를 가져와 변환하는 buildBlock() 이라는 정적 메서드를 하나 이상 제공 해야함
  • 아래 예제의 최종 결과는 SimpleStringBuilder 구조체가 result builder가 되어, 문자열 결합이 필요한 곳에 @SimpleStringBuilder 를 어디에서나 사용할 수 있음
@resultBuilder
struct SimpleStringBuilder {
    static func buildBlock(_ parts: String...) -> String {
        parts.joined(separator: "\n")
    }
}

//각 문자열 끝에 쉼표가 필요하지 않음
@SimpleStringBuilder 
func makeSentence3() -> String {
    "Why settle for a Duke"
    "when you can have"
    "a Prince?"
}

print(makeSentence3())

물론 SimpleStringBuilder.buildBlock()과 같이 직접 사용할 수 도 있음

let joined = SimpleStringBuilder.buildBlock(
    "Why settle for a Duke",
    "when you can have",
    "a Prince?"
)

print(joined)

추가로

static func buildEither(first component: String) -> String
static func buildEither(second component: String) -> String
static func buildArray(_ components: [String]) -> String

등의 함수를 추가하여 더 많은 기능으로 확장 가능

출처