Hi,

I raised this issue a few months back and discussion has died out since.
I’m raising this again to see if there are any objections before I submit a 
proposal.



I have a class that conforms to a protocol which declares a method with a 
specific return type.
In case I want to return a subclass of the return type I am forced to use 
anassociatedtype.
This feels like a hack.

Example:

// The protocol
protocol MyShapeProtocol {
// returns Shape
func make() -> Shape?
}

// Circle inherits from Shape
class Circle : Shape {}

// CircleMaker conforms to the MyShapeProtocol
class CircleMaker : MyShapeProtocol {
// CircleMaker wants to return Circle which is a type of Shape
func make() ->Circle? {
return Circle()
}
}

This will not work.
For that to work I’ll need to use toe associatedtype “hack”:

Example:
protocol MyShapeProtocol {
associatedtype ShapeReturnType : Shape
func make() -> ShapeReturnType?
}

class Circle : Shape {}

class CircleMaker : MyShapeProtocol{
func make() ->Circle? {
return Circle()
}
}

What I’m suggesting is to allow to return a subclass for a protocol method 
without the need for an associatedtype.

Any reason why not?
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to