associatedtype
을 포함하는 사용자 정의 유형이있는 상황에 처해 있습니다. 이 값이 Void
인 경우, 기본 동작 (전화 사이트를보다 편리하게 만들기 위해)을하고 싶습니다. 나는 아래의 예를 끓여하려고 :관련 유형이 Void 인 사용자 정의 유형 확장
protocol FooType {
associatedtype T: Any
var bar: (String) -> T { get }
}
struct Foo<T>: FooType {
let bar: (String) -> T
}
extension Foo where T == Void { // Compile error: "Same-type requirement makes generic parameter 'T' non-generic".
init() {
self.bar = { _ in return }
}
}
아이디어는 (bar
라는 이름의 일반적인 유형 Void
인 경우에, 그것은 (내 시나리오) 이해가되지 않는 함수를 전달하는 것입니다 이 예에서). 따라서이 특정 컨텍스트에서이 함수의 기본 구현을 원할뿐입니다.
위의 작업을 수행하려고 할 때 Same-type requirement makes generic parameter 'T' non-generic
은 매우 제한적일 수 있습니다. 특정 유형을 포함 할 때 Array
유형 이에 대한 해결 방법은 프로토콜을 도입하는 것이지만 Void
에 대해서는 그렇게 할 수 없습니다. 스위프트 3에서 내가 원하는 것을 할 수 있습니까? 아니면 현재 이것이 한계입니까?