Internal is the best choice available at the moment but I wouldn’t call it the 
“right” choice. Languages with the concept of classes often have a “protected” 
scope with means “visible within this class and subclasses”. In Swift that 
could mean “visible within this class, subclasses, and extensions” which would 
also make it useful for structs/enums, etc. I’ve also wanted such an access 
level on numerous occasions.


> On Oct 29, 2017, at 12:04 PM, Adam Kemp via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> Internal is the right choice here. If it gives too much access then you might 
> consider pulling this code into a separate module.
> 
> If “private” gave access to every extension then any code outside your module 
> could make a new extension and access that method. That would make it 
> effectively public in that you wouldn’t have any ability to limit who can 
> call it.
> 
> On Oct 29, 2017, at 7:37 AM, Mike Kluev via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>> i am missing some protection level, which can be called "classprivate" or 
>> "structprivate" / "enumprivate" (names could be better). here is an example:
>> 
>> --- file Some.swift ---
>> 
>> class Some {
>>      private func foo() {
>>              bar() // error: inaccessible due to 'private'
>>      }
>> }
>> 
>> --- file Some+Bar.swift ---
>> 
>> extension Some {
>>      private func bar() {
>>              foo() // error: inaccessible due to 'private'
>>      }
>> }
>> 
>> 1) i want to have this extension in a different file (to keep file sizes 
>> manageable).
>> 
>> 2) i can't use either private or fileprivate due to compilation errors
>> 
>> 3) i do not want to have neither "foo" nor "bar" public
>> 
>> 4) "internal" doesn't help as "foo" and "bar" will be available to my app 
>> (which is unwanted).
>> 
>> is there some "classprivate" to help here? if not so far, shall there be 
>> one? opinions?
>> 
>> Mike
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to