2
나는 이상한 문제에 직면 해있다. 나는 다음과 같이 말하고있다. 나는 하나의 제네릭 타입을 또 다른 제네릭 타입으로 제약하고 싶다.스위프트 3의 제네릭의 제네릭
설명해 드리죠, 나는 간단한 제네릭 형식이 있습니다
class Simple<T : Equatable> { ... }
을 그리고 또 다른 제네릭 형식 제약를 원하는 간단한 (일반) 입력하지 물론
class Complex<U : Simple> { ... } // WRONG!
을 컴파일도이 없습니다 :
class Complex<U : Simple<T : Equatable>> { ... } // WRONG!
도 :
내가 찾은class Complex<U : Simple<T>> where T : Equatable { ... } // WRONG!
유일한 방법은 다음과 같습니다
: 나는 그런 일이있을 경우 가let x = Complex<Date, Simple<Date>>()
최악의 상상 :
class Complex<T : Equatable, U : Simple<T>> { ... }
그래서 나는 각 instanciation에 T
를 반복해야합니다
class SimpleThing : Simple<Thing> { ... }
let y = Complex<Thing, SimpleThing>()
어떻게하면 Complex
을 신고 할 수 있습니까? 이 방법으로 보내시겠습니까? :
let x = Complex<Simple<Date>>()
let y = Complex<SimpleThing>()
스위프트 3에서만 가능합니까?
미리 감사드립니다.
겉으로보기에는 쉬운 문제에 대한 약간의 복잡한 해결책입니다. 어쨌든이 문제를 그런 식으로 보는 것이 매우 유용합니다. – Zaphod