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
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to