[swift-evolution] Class scoped access level

Adrian Zubarev adrian.zubarev at devandartist.com
Fri Sep 9 11:34:08 CDT 2016


There must be a better solution to this problem, because you might also extend value types from different files. That would mean, we'd need `structprivate` `protocolprivate` etc. 

How about: `internal(class)` etc. ? Or something like `internal(private)` to rule them all (I don't like the last name, but something that would rule them all would be nice to have)! 


-- 
Adrian Zubarev
Sent with Airmail 

Am 9. September 2016 um 17:49:29, Tom Bates via swift-evolution (swift-evolution at swift.org(mailto:swift-evolution at swift.org)) schrieb:

> 
> There is currently no way of accessing "shared code" from extensions declared outside the base .swift file
> 
> I would love to see along side the new fileprivate access level a classprivate access level that would allow any extension declared outside of the original .swift file to access these properties and functions in an attempt to reuse code. 
> 
> an example is below...
> 
> =================
> //MyClass.swift
> public class MyClass {
> 
> classprivate func sharedFunction() {
> self.function1()
> self.function2()
> }
> 
> fileprivate func function1() {}
> fileprivate func function2() {}
> }
> =================
> 
> =================
> //MyClass+Save.swift
> extension MyClass {
> 
> public func save() {
> self.someFunction()
> self.sharedFunction()
> }
> 
> fileprivate func someFunction() {}
> } 
> =================
> 
> Currently to achieve anything like this you would have to make the "core" functions public or internal or write the whole thing in a single file which as I understand it is not optimal for the compile speed and can get unmanageable for large classes. This would allow a more managed file structure and the separation of related functions from the core declaration. 
> 
> There would be no migration needed I don't think as the impact on current code would be zero until the developer adopts the new access level 
> 
> Regards, 
> Tom
> 
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160909/403f2803/attachment.html>


More information about the swift-evolution mailing list