1
내 형식 확장에서 형식간에 몇 가지 연결을 소개하고 싶습니다. 다음 예제를 고려하십시오.Swift 확장자에서 래퍼 유형 인수를 사용하는 방법
struct Wrapper<T> {
var target: T?
}
struct Container<T> {
var wrapper: T?
}
extension Container where T == Wrapper<Any> {
func unwrap() -> Any {
return wrapper!.target!
}
}
이 코드는 컴파일되지만, 이것을 사용하고 싶습니다. 코드 위
var wrapper = Wrapper<String>()
wrapper.target = "foo"
var container = Container<Wrapper<String>>()
container.wrapper = wrapper
let string: String = container.unwrap()
그래서 명확하게하기 위해 컴파일 오류
Container<Wrapper<String>>' is not convertible to 'Container<Wrapper<Any>>
로 끝납니다. 확장 제한에서 유형 인수가 새로운 메소드의 리턴 유형임을 표시하는 방법이 있습니까? 그래서 순간
extension Container where T == Wrapper<NEWTYPEARGUMENT> {
func unwrap() -> NEWTYPEARGUMENT {
return wrapper!.target!
}
}
감사합니다. – dagi12