bmikaili
(Berzan Yildiz)
1
I'm trying to write a function that returns a some of a Protocol, so an Opaque Type. I would just use Protocol Existentials, but my protocol has associated type requirements.
So anyway, my problem is that I have another struct, whose initializer relies on a function builder that has the type () -> MyProtocol. Now when I use the function I described in the first paragraph within the function builder, I return some of MyProtocol. So I would need to change the closure type to () -> some MyProtocol. The issue is, that's not implemented.
I'm not sure how I could circumvent this. I may have to use type erasure to avoid returning an Opaque Type.
Hope this makes sense, I can add more detailed snippets if it's not enough info.
svanimpe
(Steven Van Impe)
2
What about generics?
protocol MyProtocol { }
struct Builder<Product: MyProtocol> {
let function: () -> Product
init(function: @escaping () -> Product) {
self.function = function
}
func build() -> Product {
function()
}
}
Or does your builder function return instances of different types?
1 Like