[swift-evolution] Class scoped access level

Xiaodi Wu xiaodi.wu at gmail.com
Fri Sep 9 12:09:12 CDT 2016


Isn't the general solution to this problem submodules? In any case, seems
like it'd be out of scope for Swift 4 phase 1.


On Fri, Sep 9, 2016 at 11:34 AM, Adrian Zubarev via swift-evolution <
swift-evolution at swift.org> wrote:

> 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) 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
>>
>
> _______________________________________________
> 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/a3578e6f/attachment.html>


More information about the swift-evolution mailing list