I kind of want something like protected for protocols, but not necessarily 
protected as it is implemented in other languages.

I often have a few low-level methods in a protocol which the higher level 
methods in protocol extensions use to do their work.  Occasionally, I need to 
guarantee a piece of information in the protocol, but I really don’t want to 
expose it to everyone.  Right now I do, and then put a warning not to call it 
directly.

What I would like, is a way to mark a method as needing to be implemented, but 
allow that implementation to have a lower access level than the protocol itself 
(e.g. the method is private, but the protocol is public).  I also want 
extensions to the protocol to be able to see/access those methods.

I don’t know what form this would take. There are lots of options:
- Mark the methods as “hidden” or some other keyword in the protocol
- Treat it like private(set) and allow different access levels to be set when 
it is accessed from extensions (e.g. a method might be private, but set to 
internal for extensions… thus you can call the method from within extensions in 
the module, but not from arbitrary code or extensions outside the module)
- Something I haven’t thought of.

I kind of like the idea of being able to set a specific access level for what 
extensions see in general.  

Thanks,
Jon
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to