[swift-evolution] [PROPOSAL]Return subclass type to a protocol where a superclass is defined without the need for associatedtype

Howard Lovatt howard.lovatt at gmail.com
Sun Apr 17 17:53:46 CDT 2016


I think this should be part of completing generics.

On Sunday, 17 April 2016, Yogev Sitton via swift-evolution <
swift-evolution at swift.org> wrote:

> I have a class that is conforming to a protocol with a method that
> requires a specific return type.
> In case I want to return a subclass of the return type I am forced to use
> an associatedtype that feels like a hack.
>
> As an example:
>
> *protocol MyShapeProtocol {*
> *    func make() -> Shape?*
> *}*
>
> *class Circle : Shape {}*
>
> *class CircleMaker : MyShapeProtocol{*
> *    func make() -> Circle? {*
> *        return Circle()*
> *    }*
> *}*
>
> This will not work.
> For that to work I’ll need to use toe associatedtype “hack”:
>
> *protocol MyShapeProtocol {*
> *    associatedtype ShapeReturnType : Shape*
> *    func make() -> ShapeReturnType?*
> *}*
>
> *class Circle : Shape {}*
>
> *class CircleMaker : MyShapeProtocol{*
> *    func make() -> Circle? {*
> *        return Circle()*
> *    }*
> *}*
>
> Is there a real value in adding the associatedtype line?
>


-- 
-- Howard.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160418/b0921323/attachment.html>


More information about the swift-evolution mailing list