[swift-evolution] Proposal: Re-instate mandatory self for accessing instance properties and functions

Rob Napier robnapier at gmail.com
Sun Dec 13 01:15:15 CST 2015


I wanted to reopen this discussion that seems to have trailed off.
Requesting the return of self was my very first ask of Swift if I remember
correctly (https://devforums.apple.com/message/1013085). Continued work in
Swift has both strengthened and modified that ask. Here are several of the
examples discussed before:

https://gist.github.com/schwa/94b11dc0a7a331f46b25
https://gist.github.com/rnapier/478465d1b15e95b98b42
https://gist.github.com/rnapier/4213dc64206b17df6935
https://gist.github.com/dwineman/d6c56ec0c0e2fdb761db

I get that it seems tedious to type (and read) "self." and I get that
"self." is currently a hint that self might be captured (but doesn't
actually mean that, since you can use self. without capturing, and
sometimes have to, very often in init, so really it's basically meaningless
for that use).

That's why I suggest using .x and .f() to mark implicit self. I realize
that this may conflict with enum usage. If so, then use another marker. For
instance :x or ^x or anything. But implicit self is confusing in a lot of
code, can (and does) lead to shadowing bugs, and is very difficult to
reason about in diffs or any other interface that isn't an IDE (especially
code review).

Thoughts, David? I agree with your basic proposal; I just want to amend it.

-Rob
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151213/e8550ebf/attachment.html>


More information about the swift-evolution mailing list