SwiftUI에서 볼 수 있는 some의 의미에 대해서 알아봅니다.
some 키워드는 opaque type을 만들어주는 keyword입니다. opaque는 불투명한, 불분명한 이라는 뜻입니다. 여러 타입을 아우를 수 있는 protocol과는 다르게 opaque type은 구체적인 하나의 타입을 의미합니다. 분명하게 한가지 타입이 정해져있는 상황이지요.
var body: some View {
Text("Hello")
}
하지만 외부에서 보았을 때는 어떤 타입인지 모르게 하고 싶을 때 opaque 타입을 사용합니다. 내부의 클로저를 보면 리턴 타입이 Text라는 것을 알 수 있지만 외부에서는 그냥 View 타입 중에 하나라고 표현하고 싶을 때 사용합니다.
some 키워드를 구체적인 타입에 붙여서 사용하면 위와 같은 에러가 발생합니다. 해석해보면 프로토콜이나 base class로만 opaque type을 정의할 수 있다는 내용입니다.
opaque 타입의 정의를 생각해보면 당연합니다. opaque 타입은 불분명하게 하여 숨기는데 사용합니다. 하지만 Text 같은 구체적인 타입에 붙여버리면 숨길 수가 없게되니 이런 에러가 발생하는 것이죠.