본문 바로가기
Apple/Apple_Swift

@resultBuilder

by LeviiOS 2024. 6. 26.
반응형

resultBuilder란?

 

resultBuilder는 Swift 프로그래밍 언어에서 사용되는 특수한 기능으로, 여러 개의 값을 조합해서 하나의 결과를 만들어내는 방식입니다. 일종의 “레고 블록”을 쌓아서 하나의 완성된 모형을 만드는 것과 비슷합니다.

 

예를 들어, 우리는 여러 개의 작은 블록을 쌓아서 큰 집을 만들 수 있습니다. resultBuilder는 여러 개의 작은 값을 받아서 하나의 큰 값을 만들어내는 “건축가”와 같은 역할을 합니다.

 

비유를 통한 설명

 

우리가 집을 짓는다고 생각해봅시다. 집을 짓기 위해서는 벽돌, 창문, 문, 지붕 등이 필요하겠죠? 하나씩 모아서 집을 완성할 수 있습니다.

 

마찬가지로, resultBuilder는 여러 개의 값을 하나로 합쳐주는 기능을 제공합니다. 예를 들어, 여러 개의 숫자를 더해서 하나의 큰 숫자를 만들 수 있죠.

 

코드 예제

 

한번 간단한 예제를 통해서 살펴볼게요. 여기서는 여러 문장을 합쳐서 하나의 긴 문장을 만드는 것을 해볼게요.

 

@resultBuilder
struct SentenceBuilder {
    static func buildBlock(_ components: String...) -> String {
        components.joined(separator: " ")
    }
}

// SentenceBuilder를 사용해서 문장을 만드는 함수
func makeSentence(@SentenceBuilder builder: () -> String) -> String {
    builder()
}

// 사용 예시
let sentence = makeSentence {
    "Hello"
    "world!"
    "How"
    "are"
    "you?"
}

print(sentence) // "Hello world! How are you?"

1. @resultBuilder: 이 키워드는 SentenceBuilder가 여러 개의 값을 받아서 하나의 값을 만드는 “건축가” 역할을 한다는 것을 Swift에게 알려줍니다.

2. buildBlock 메서드: 여러 개의 문자열(components)을 받아서 하나의 긴 문자열로 합칩니다. 이때 각 문자열 사이에 빈 칸(” “)을 넣어줍니다.

3. makeSentence 함수: SentenceBuilder를 사용하여 여러 문장을 하나로 합칩니다. 중괄호 {} 안에 여러 문장을 나열하면, SentenceBuilder가 이들을 합쳐줍니다.

 

우리가 { "Hello" "world!" "How" "are" "you?" }처럼 여러 개의 문자열을 나열하면, SentenceBuilderbuildBlock 메서드가 이 문자열들을 하나로 합칩니다.

결과적으로 “Hello world! How are you?“라는 하나의 긴 문장이 만들어집니다.

 

resultBuilder는 여러 개의 작은 값을 하나로 합쳐서 큰 값을 만들어주는 “레고 블록”을 쌓는 것과 같은 역할을 합니다. 다양한 값을 조합하여 원하는 결과를 쉽게 만들 수 있게 도와줍니다.

반응형