[swift-evolution] [RFC] #Self
Vladimir.S
svabox at gmail.com
Tue May 10 13:38:17 CDT 2016
On 10.05.2016 20:50, Matthew Johnson wrote:
> No, the whole point is that D.f() returns C because C is the requirement
> of 'f' is declared to return #Self which is C where the protocol
> conformance is declared and implemented. If you want a covariant
> requirement you would use Self as the return type, not #Self.
I just followed your example with NSURL.. Probably I don't understand the
point, but you said you want to conform a non-final class to protocol with
method -> #Self.
>---------------------<
protocol A { static func createWithString(s: String) -> Self }
extension NSURL: A { // cannot conform because NSURL is non-final }
If we could define a protocol requirement that didn't covary (using
#Self or whatever) we would be able to write the desired conformance.
>---------------------<
And I don't understand how do you want to achieve the target, as even if we
'invent' #Self, this (as I understand) can't work as class is not final.
Just like with 'simple' Self - class must be final to conform. Thank you
for clarification.
More information about the swift-evolution
mailing list