<div dir="ltr">I think this should be extended to functions as well. How would you know the difference between a global function and a class function ?</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Dec 15, 2015 at 10:28 PM, Slava Pestov via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
I don&#39;t see anyone lay out how this proposal can interact with nested types and such. There&#39;s a fair amount of complexity in Swift with what you can do by nesting things inside of each other, so the simple conceptual model of &quot;locals are unqualified, instance variables have a self. prefix&quot; doesn&#39;t seem to generalize.<br>
<br>
Will I need to qualify associated types with the protocol or type name to refer to them? What about generic type parameters, they&#39;re sort of like &quot;instance variables&quot; too.<br>
<br>
What about class methods that want to call each other? Do they need the explicit &#39;self&#39;, or an explicit class name prefix? The latter changes semantics if the class method is overridden in a subclass.<br>
<br>
If we ever add the ability for an inner type to capture stored properties from the outer type, how do you reference properties of the outer type? I guess the problem has to be solved anyway to refer to an outer &quot;self&quot; explicitly, but qualifying everything with OuterType.self.foo kind of defeats the purpose of inner types altogether.<br>
<br>
I&#39;m not sure I buy the readability arguments in favor of this approach. It seems the languages where explicit &#39;self&#39; was adopted did it mostly by accident, or because of implementation concerns. In Python for instance, there&#39;s no way for assignment to modify a binding in an outer scope, so &#39;foo = bar&#39; always sets a local named &#39;foo&#39;, IIRC. So explicit self is needed there. Greg Parker explains earlier in this thread by explicit self was chosen for Objective-C, and it wasn&#39;t readability.<br>
<br>
Slava<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">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>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><span style="font-size:16px;line-height:19.2px"></span><span style="font-size:12.8px"> Wizard</span><br></div><div><a href="mailto:james@supmenow.com" target="_blank">james@supmenow.com</a></div><div>+44 7523 279 698</div></div></div></div></div></div>
</div>