<div dir="ltr">My two cents: I don't think that "there will be more work for the programmer" is necessarily a reason to not implement a feature. Granted, we don't want to end up like Java 7 where I dreaded doing some things that would be dead simple in Swift--but Swift already has a lot of expressiveness and conciseness built in. Explicit self won't kill that. <span style="line-height:1.5">Mandatory 'self' for ivar and method access brings a tiny bit of programmer overhead (honestly, . is the easiest key to hit. You do it all the time, both in plain english and in code) and prevents some issues that will nag at you and waste days.</span><div><br></div><div>Java is almost hellish when it comes to conciseness but you don't hear anyone saying "at least we have implicit 'this'!"<br><div><br></div><div>I'm sure there were people presenting that exact argument when optionals/enforced nullability was first introduced into other languages: "Ugh, now I have to null-check everything? What a pain!"</div></div><div><br></div><div>Although I am a strong believer in the programmer-facing aspects of a language needing to be good, I think that this decision should come down to the relative long-term pros/cons: use for refactoring, protecting against mistakes, etc. One thing that programmers are notoriously bad at doing is overcoming the immediate want to put less effort toward something, in order to accept something that will be useful long-term. That is why so many people don't unit test: can't see past the upfront cost to create maintainability.</div><div><br></div><div>I accept that people will continue to say "I can't be bothered to type 'self.'", but I just wanted to get this out there. It's really not that big a deal--unless you're talking about readability rather than five keystrokes on a method access. Keystrokes aren't the bottleneck in effective programming.</div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Dec 14, 2015 at 6:05 PM Stephen Celis via swift-evolution <<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">On Mon, Dec 14, 2015 at 5:35 PM, Dan Loewenherz via swift-evolution <span dir="ltr"><<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>></span> wrote:<br></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
2. How can one reference a function with the same name as an instance<br>
method in the class from which you’re referencing from? E.g., in the above<br>
example, I believe that the “add” function is unreachable from within the class<br>
(please correct me if I’m wrong).</blockquote><div><br></div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>FWIW, I like implicit self but have been bit by this several times before. You can use the current module's name to reference the free function, but the error messaging you'll face beforehand doesn't make it easy to get to that solution.</div><div><br></div><div>Stephen</div></div></div></div>
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=8CZIdLciSFC-2BO5jF-2FiP8qN7dBFsgCUZ50wdTsolcRPdPbSSoHHzDjRqMgt8mKT0j0o0orQZ8PkcmOyf4f2KVd0Z4Qxg7x6PMkGu0jW2Y6D6IV2rt28vUwomyeuZNpj7jFi8vfjNu9GtHF14KkOyR-2Fsb9K7Dem0eZ4ZUSySxYv1jBrxTAsLUZADXJ7ILUCFqsJqoYGF4PjWdqK43pXbHBm7vgWb98CTSrdDozVRvMNEs-3D" alt="" width="1" height="1" border="0" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important">
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div>