[swift-evolution] Allow protocol vars to match derived types
Mark Anders
mark at markanders.net
Mon Mar 7 10:12:02 CST 2016
Consider the following (you can paste it in a Playground to see the error):
class Node { }
class Containable : Node{}
protocol Refers {
var to : Node {get}
}
class Link : Refers {
var to : Node
init(n : Node) {
to = n
}
}
class Contains : Refers {
var to : Containable
init(c : Containable) {
to = c
}
}
This currently does not work because it seems that to adopt a protocol, the
type of protocol var must match exactly.
It would be great if objects could be said to adopt a protocol if the type
of the var is the type or a derived type.
This would allow me to treat the structure in a type safe way (i.e. only a
Containable can have a Contains relationship),
while me to have a set of Refers and iterate through each Node.
Is there a reason why the type must match exactly? Or could protocols be
enhanced to to allow matching
derived types, similar to assignment and func parameter rules?
Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160307/b2128cff/attachment.html>
More information about the swift-evolution
mailing list