swiftUI를 배우기 시작하면서 some이 무엇이길래, 사용이 되는 걸까?
궁금증을 시작으로 찾아보았습니다.
특정 유형의 반환이 아닌 some 을 이용해서 유형값을 특정짓지 않아도 됩니다.
하단 예제의 함수는 사다리꼴의 기본 유형을 노출하지 않고 사다리꼴을 반환을 합니다
struct Square: Shape {
var size: Int
func draw() -> String {
let line = String(repeating: "*", count: size)
let result = Array<String>(repeating: line, count: size)
return result.joined(separator: "\n")
}
}
func makeTrapezoid() -> some Shape {
let top = Triangle(size: 2)
let middle = Square(size: 2)
let bottom = FlippedShape(shape: top)
let trapezoid = JoinedShape(
top: top,
bottom: JoinedShape(top: middle, bottom: bottom)
)
return trapezoid
}
let trapezoid = makeTrapezoid()
print(trapezoid.draw())
도형을 그리는 함수를 반환한다고 하면 shape 프로토콜에 포함되는 것들을 반환할 수 있게 됩니다.
swift 에서는 값 유형에 대해서 명시를 해야만 하는데, 불투명한 유형을 some 사용함으로써 더 확장해서 사용할 수 있게 되는 거 같습니다.
Scene (참고)
: 앱의 일부를 구성하는 사용자 인터페이스 그룹을 선언
시스템에 의해 관리되는 수명 주기가 있는 앱 사용자 인터페이스의 일부를 나타내는데, 앱 인스턴스는 이것을 포함된 Scene를 보여주며, 각 Scene는 보기 계층의 루트 요소로 작용합니다.
시스템은 Scene의 유형, 플랫폼 및 컨텍스트에 따라 다른 방식으로 보여줍니다. 한 Scene가전체 디스플레이, 디스플레이의 일부, 창, 창의 탭 등을 채울 수 있습니다. 사용자가 앱에서 단일 Document Group 선언을 기반으로 여러 문서를 동시에 열 때처럼 한 번에 두 개 이상의 Scene 인스턴스를 표시할 수 있는 경우도 있습니다.
WindowGroup을 앱에서 제공하는 보기 계층의 컨테이너로 사용합니다. 그룹의 콘텐츠로 선언하는 계층은 앱이 해당 그룹에서 생성하는 각 창의 템플릿 역할을 합니다.
HStack, VStack, ZStack
- HStack은 Gneric Structure이며, 자식들을 수평으로 배열하는 뷰입니다.
- VStack은 Gneric Structure이며, 자식들을 수직으로 배열하는 뷰입니다.
- VStack은 Gneric Structure이며, 자식들을 오버레이하고 두 축으로 배열하는 뷰입니다. (서로서로 겹치는 형태)
'Language > Swift' 카테고리의 다른 글
[SwiftUI] preview가 뭔데요? (0) | 2022.09.08 |
---|---|
[Swift] image asset 1x, 2x, 3x (0) | 2022.09.08 |
swift compile & package 사용법 (0) | 2022.08.25 |
swift extensions (0) | 2022.08.24 |
swift optional chain (0) | 2022.08.24 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!