> Le 18 avr. 2016 à 12:01, Yogev Sitton <[email protected]> a écrit :
> 
> I’m referring you to Ross O’Brien’s post:
> As of Swift 2.2, if a variable has a closure type of e.g. () -> Shape, a 
> closure of type () -> Circle would be considered a match.  If a class 
> implements 'func make() -> Shape', a subclass implementing 'func make() -> 
> Circle' has to override. However, if a protocol requires a 'func make() -> 
> Shape', a type implementing 'func make() -> Circle' isn't considered to be 
> conforming. That does seem strange.
> 
> Protocols behaves differently than closures and classes and I think they 
> should behave the same.

All right, I get it.

Shape, as a return type, is "trampoline" data that wraps any Shape value, when 
Circle is just a Circle. That's why the two functions () -> Shape? and () -> 
Circle? don't match today.

But maybe they will eventually, thanks to your request!

Gwendal

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to