[swift-evolution] access control
Matthew Johnson
matthew at anandabits.com
Mon Jan 25 19:46:09 CST 2016
> On Jan 25, 2016, at 5:47 PM, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
>
>
> on Mon Jan 25 2016, Ilya Belenkiy <swift-evolution at swift.org> wrote:
>
>>> Why should the compiler enforce this? That’s my design decision.
>>
>> It would enforce whatever design decision you make.
>>
>>> For the same reason the compiler does not enforce where I have to
>>> put „private“ (it can make suggestions like many IDEs do and offer
>>> fix-its, like „this method can be made private as it is not used
>>> outside the class“ or „this class can be put into its own file as
>>> its private methods are not used by other components in this file“.
>>
>> But once you do put it, it enforces it, and that’s the whole point of having access control.
>>
>>> No, there is a clear difference: making the type name part of the
>>> variable name enforces no compiler checks whereas putting something
>>> into different files does.
>>
>> Similarly, putting all of the source code in the same file is
>> equivalent to no checks.
>
> The place where I'm most concerned about this is in playgrounds. If
> we're going to use them to teach programming, it should be possible to
> demonstrate encapsulation there.
>
Using playgrounds for teaching is a great example of a use case for this. Thanks for mentioning it!
I also think the fact that “surrounding scope” is actually the most frequent use of `private` members (in code I have surveyed) indicates that it is a very reasonable feature request. Allowing us to declare the actual intent aids readability and clarity.
-Matthew
> --
> -Dave
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
More information about the swift-evolution
mailing list