> On Feb 12, 2017, at 10:34 AM, Charlie Monroe via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> 
>> On Feb 12, 2017, at 5:19 PM, David Hart via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>> I was reading this nice listing of Swift keywords 
>> (https://medium.com/the-traveled-ios-developers-guide/swift-keywords-v-3-0-1-f59783bf26c#.2s2yis3zh
>>  
>> <https://medium.com/the-traveled-ios-developers-guide/swift-keywords-v-3-0-1-f59783bf26c#.2s2yis3zh>)
>>  and three of them struck me as potentially not long for this world and I 
>> was thinking if we needed/could deprecate them before any kind of ABI 
>> stability set in.
>> 
>> I'm listing them here but it might be worth starting separate discussions 
>> for each of them.
>> 
>> Final
>> 
>> Can someone tell me what is the use of 'final' now that we have 'public' 
>> default to disallowing subclassing in importing modules? I know that 'final' 
>> has the added constraint of disallowing subclassing in the same module, but 
>> how useful is that? Does it hold its weight? Would we add it now if it did 
>> not exist?
> 
> To me, it's useful a lot. The module doesn't necessarily be a 1KLOC framework 
> - I've been recently refactoring a 90KLOC module and the final keyword was 
> fairly useful since some subclasses used hacks by overriding some vars or 
> methods. This allowed me to look at it from a different perspecitve, make 
> some members final and create better API endpoints for customization.
> 
> Not to mention that it allows the compiler to access stored properties 
> directly when they're final - if I recall correctly someone from the core 
> team mentioning that.
> 
>> 
>> Lazy
>> 
>> This one is clearer: if Joe Groff's property behaviors proposal from last 
>> year is brought forward again, lazy can be demoted from a language keyword 
>> to a Standard Library property behavior. If Joe or anybody from the core 
>> team sees this: do we have any luck of having this awesome feature we 
>> discussed/designed/implemented in the Swift 4 timeframe?
>> 
>> Fileprivate 
>> 
>> I started the discussion early during the Swift 4 timeframe that I regret 
>> the change in Swift 3 which introduced a scoped private keyword. For me, 
>> it's not worth the increase in complexity in access modifiers. I was very 
>> happy with the file-scope of Swift pre-3. When discussing that, Chris Latner 
>> mentioned we'd have to wait for Phase 2 to re-discuss it and also show proof 
>> that people mostly used 'fileprivate' and not the new 'private' modifier as 
>> proof if we want the proposal to have any weight. Does anybody have a good 
>> idea for compiling stats from GitHub on this subject? First of all, I've 
>> always found the GitHub Search quite bad and don't know how much it can be 
>> trusted. Secondly, because 'private' in Swift 2 and 3 have different 
>> meanings, a simple textual search might get us wrong results if we don't 
>> find a way to filter on Swift 3 code.
> 
> I like the scoped access, I actually find it useful when declaring several 
> classes within one file, so that I know I'm not accessing that class' private 
> members. That said, I agree that the change to fileprivate was IMHO a mistake 
> - aside from the fact that I dislike the fileprivate keyword, I was more 
> leaning towards the idea that fileprivate would be default for private and 
> when someone really wants to make some member scope-private, private(scope) 
> could be used.

I also like the scoped access control but think we probably made a mistake in 
the choice of keywords.  The problem was that nobody could come up with a name 
for specifying scoped access that had broad consensus.  I hope that if somebody 
identifies a really obviously good keyword for scoped access that we might 
consider making a breaking change to fix this problem.  But I think it would 
have to be very clearly better, and even then may not provide enough benefit to 
justify a breaking change.

> 
>> 
>> Thanks for hearing me out!
>> 
>> David.
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org <mailto: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