오늘은 Swift Parameter Label(매개변수 라벨)의 사용방법에 대해 정리해 보겠습니다.
1. Swift Parameter Label(매개변수 라벨) as
Swift에서 Parameter Label(매개변수 라벨) as는,
함수를 호출할 때,
각 인자가 어떤 목적으로 사용되는지 알려주어,
코드의 가독성을 높여줍니다.
as는 "~로써", "~로"라는 의미를 가지고 있는데요.
타입자체를 인자로 받는 함수에서,
해당 타입이 어떻게 사용될 것인지를 표현할 때 유용합니다.
코드를 보면서 이해해 볼까요?
아래 함수는 T타입을 받아, U타입으로 변환해주는 함수입니다.
여기서 as는 특별한 기능을 하는 것은 아니고,
하나의 라벨로써,
convert함수호출시 어떤 타입으로(또는 타입으로써) 함수에서 사용될지,
문장처럼 편하게 읽게 해주는 역할을 해주는 역할을 합니다.
func convert<T, U>(_ value: T, as type: U.Type) -> U? {
return value as? U
}
// 사용
let intValue = convert("123", as: Int.self)
위의 함수 호출코드를 보면,
"123"을 "Int.self"로써(as) convert한다는,
의미가 영어로 잘 전달됩니다.
여기서 사용된, Int.self가 조금 특이하게 보이실 수 있는데요.
이는 타입자체를 인자값으로 전달할 때 사용합니다.
특히 위 함수와 같이 어떤 값을 함수내에서 특정 타입으로 변환하고자 할 때,
Type에 대한 값을 받아서 사용할 때 이런 식으로 사용합니다.
- 함수에서 as type: U.Type의 Generic으로 파라미터를 정의
- 함수 호출시 타입에 '.self'를 붙여 타입자체를 값으로 전달
- ex> String타입을 인자값으로 전달하려면, String.self가 되겠지요.
- ex> String타입을 인자값으로 전달하려면, String.self가 되겠지요.
예제 코드를 하나만 더 보고 마무리 하겠습니다.
아래는 네트워크 요청 함수인데요.
Api.getUser(123)으로 호출할 때,
decode함수로 decode시에, User타입으로 변환되어 사용되는 것을 보여줍니다.
func request<T: Decodable>(_ api: Api, as type: T.Type) -> AnyPublisher<T, Error> {
return URLSession.shared.dataTaskPublisher(for: api.urlRequest)
.map(\.data)
.decode(type: type, decoder: JSONDecoder())
.eraseToAnyPublisher()
}
// 사용
let userPublisher = request(Api.getUser(id: 123), as: User.self)
Parameter Label(매개변수 라벨) as의 사용방법에 대해 정리해 보았는데요.
as를 이해함으로서 다양한 swift코드를 보다 자연스럽게 읽는데 도움이 되었으면 좋겠습니다.
'iOS, Swift > Swift' 카테고리의 다른 글
Swift enum 총정리 (1) | 2025.03.31 |
---|---|
Swift Closure의 강한 캡처와 [weak self]의 필요성 (2) | 2025.03.14 |
Swift inout parameter(파라미터) 함수 마스터하기 (0) | 2025.03.13 |
Swift guard let 이용한 Optional unwrapping 방법 (0) | 2025.03.12 |
Swift 불투명 타입 some은 왜 필요할까? (0) | 2025.03.08 |
댓글