[swift-evolution] final + lazy + fileprivate modifiers

Vanderlei Martinelli vmartinelli at alecrim.com
Sun Feb 12 23:56:52 CST 2017


Well. I really would like to see something like this in Swift:

public(open|closed)
protected // (yes, we and Cocoa still use classes)
internal
private(file)

I would like the abstract modifier to any access level because, well... We
and Cocoa still use classes. ;) It could be something like
protected(abstract) (I’m getting the syntax from private(set) thing).

The fileprivate addition meaning the previous `private` was a mess (after
we accustomed to the private Swift’s semantic since access levels were
introduced). And the open keyword as it was implemented in Swift 3.x makes
code like open func close() { .. } difficult to understand for a newbie and
ugly for a experienced programmer.

final and lazy are good as they are today.

My 2 cents.


Regards,

Vanderlei Martinelli

On Sun, Feb 12, 2017 at 2:19 PM, David Hart via swift-evolution <
swift-evolution at 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) 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?
>
> *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.
>
> Thanks for hearing me out!
>
> David.
>
> _______________________________________________
> 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/20170213/a3d86236/attachment.html>


More information about the swift-evolution mailing list