[swift-evolution] [Review] SE-0169: Improve Interaction Between private Declarations and Extensions
Jose Cheyo Jimenez
cheyo at masters3d.com
Sun Apr 9 20:04:44 CDT 2017
> On Apr 8, 2017, at 5:19 AM, Neil via swift-evolution <swift-evolution at swift.org> wrote:
>
> I agreed with Charlie, but I think there’s another option.
>
> The access control problems that both SE-0159 and SE-0169 are attempting to address can be resolved not by changing the definition of the existing access modifiers, but refocussing the use of extensions.
>
> One such way would be to introduce a `partial` modifier. It would be similar to C#’s partial modifier. The proposed partial modifier would be purely additive and it would go a long way to mitigate the access control issues inherent in extension-oriented design.
>
> The key characteristics of partial-oriented design would be:
>
> - Partials would allow the splitting of implementations into multiple logical units without the same-file restriction.
I really like the idea of partial but it would need to be restricted to the same file. This would allow partial to just be a compile time feature which just zips up a type together. Another great feature would be that it could allow stored properties because it is only a compile time feature. Partial could be used to communicate to the user that this type has additional members and properties declared somewhere else in the file.
+1 for file scope partial.
> - Partial definitions of a type are restricted to same module. If you wish to add functionality to a type external to its defining module, use an extension.
> - Partials would provide greater clarity between additive extension and the original implementation.
> - Within a partial, private would be type-private.
> - Within an extension, private would be scoped-private (the status quo).
>
> I do see that the last two points may introduce some friction. Particularly because:
>
> - Within a partial, fileprivate would be more restrictive than private.
> - Within an extension, fileprivate would be less restrictive than private (the status quo).
>
> However, I don’t see these as too challenging for educators or developers as they are differentiated by their top-level scope.
>
>
>> On 07/04/2017, 05:57, "Charlie Monroe via swift-evolution" <swift-evolution-bounces at swift.org on behalf of swift-evolution at swift.org> wrote:
>>
>> Simply as long as it's file-based, it's not a solution, it's just another attempt to satisfy some part of the community. I'm not saying that the current access levels are perfect, but I still believe the way to go is to either use submodules, and/or introducing the concept of "protected" members.
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> 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/20170409/25e0a05c/attachment.html>
More information about the swift-evolution
mailing list