1. 타입 캐스팅해서 쓰는 게 맞나...?
protocol Shape {
var color: Color { get, set }
}
class Square: Shape {
var color: Color
var text: String
..생략..
}
//
func get() -> Shape { //추상 타입으로 값을 리턴해주기에, shape에 있는 형태밖에 사용하지 못한다.
let square = Square(..생략..)
return square
}
//사용할 때
let a = get()
a.color
a.text//에러!!
위와 같이 이 추상화 protocol로 호출할 경우 해당 protocol의 인터페이스대로 사용할 수밖에 없다.
2. Some 사용하면, 구체 타입을 직접 사용할 수 있다!!
바로 예제를 보자
//위 예제와 같은 class, protocol이라 가정
func get() -> some Shape { //구체 타입으로 값을 리턴해주기에, shape에 없어도 사용할 수 있는 것들이 생긴다!
let square = Square(..생략..)
return square
}
//사용할 때
let a = get()
a.color
a.text//사용가능!!
구체 타입을 쓰기 위한 불필요한 몸부림??을 줄일 수 있다.
'🍎 Apple > Swift' 카테고리의 다른 글
dequeueReusableCell과 dequeueConfiguredReusableCell, 뭐가 다를까? (0) | 2023.10.26 |
---|---|
[Swift] defer, 내부 코드를 매우 간단하게 만들고 싶을 때! (0) | 2023.10.24 |
[Swift] Completion Handler(ft. Escaping Closure) (0) | 2023.10.22 |
[Swift] Trailing Closure란? (1) | 2023.10.22 |
[Swift] 프로퍼티 래퍼(Property Wrapper), 대체 어떻게 쓰는거지?? (0) | 2023.10.22 |