[swift-evolution] [PROPOSAL]Return subclass type to a protocol where a superclass is defined without the need for associatedtype
Gwendal Roué
gwendal.roue at gmail.com
Mon Apr 18 04:48:59 CDT 2016
Hello Yogev,
I think your question belongs to the swift-users mailing list (quoting https://lists.swift.org/mailman/listinfo):
- swift-evolution: Discussion of the evolution of Swift, including new language features and new APIs.
- swift-users: For users to get help with or ask questions about Swift or its related tools
Gwendal Roué
> Le 17 avr. 2016 à 10:52, Yogev Sitton via swift-evolution <swift-evolution at swift.org> a écrit :
>
> 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?
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
More information about the swift-evolution
mailing list