우리가 보통 함수나 객체를 사용할때는 다음과 같다.
함수명 혹은 객체명([인자])
그러나 SwiftUI를 사용하며 뷰에서 다음과 같은 구문은 도대체 무엇인지 의아했다.
struct ContentView: View {
var body: some View {
VStack(spacing: 10) {
Text("Hello")
Text("How are you?")
}
...
struct MyVStack<Content: View>: View {
let content: () -> Content // 클로저 표현식을 담는 변수
init(@ViewBuilder content: @escaping () -> Content) {
self.content = content
} // 클로저 표현식({})를 인자로 받음으로서 다수의 하위뷰들을 받아 content변수에 넣음.
var body: some View {
VStack(spacing: 10) {
content()
}
.font(.largeTitle)
}
}
MyVStack {
Text("Text 1")
Text("Text 2")
HStack{
Image(systemName: "star.fill")
...
}
...
}
참고: 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍, 닐 스미스