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?