<div dir="ltr"><span style="font-size:14px">&gt; I admit I was surprised by the semantics of private in Swift when I first discovered it, </span><br><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px">And so will be most of newcomers. </span></div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px"><span style="font-size:14px">&gt; But I’ve not been overly bothered by it, and I’ve always kept a fairly strict one class per file &gt; anyway.</span><br></span></div><div><br></div><div><span style="font-size:14px">It is still useful to have &quot;scoped&quot; in one class per file structure. If the code is organized in a way where internal state is hidden in one scope and other functions that don&#39;t require access to the internal state are added via extensions, &quot;scoped&quot; can hide the internal state from extensions and also hide implementation details of each extension from other extensions in the same file.</span></div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px"><span style="font-size:14px">&gt; I also don’t like that the proposal adds another keyword/layer of scoping.</span><br></span></div><div><span style="font-size:14px"><span style="font-size:14px"><br></span></span></div><div><span style="font-size:14px">Today, there is no other way to express what &quot;scoped&quot; does except by putting each scope into a separate file. This is very restricting and makes it more difficult to put related code in the same file (you lose any the help that the compiler could give you with protecting against using private APIs).</span></div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px"><span style="font-size:14px">&gt; If people really wanted Scoped Access Level, I would have suggested modifying the meaning &gt; of private to correspond to Scoped Access Level and not add another keyword like this &gt; proposal.</span><br></span></div><div><span style="font-size:14px"><span style="font-size:14px"><br></span></span></div><div><span style="font-size:14px">&quot;private&quot; as it is today serves an important purpose of allowing access to internal state of related classes. It solves the same problem as &quot;friend&quot; in C++. &quot;scoped&quot; is necessary to hide implementation details completely, regardless of where the code is.</span></div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px"><span style="font-size:14px">&gt; I don’t find it worthwhile enough to warrant adding another scoping level and confusing &gt; newcomers.</span><br></span></div><div><span style="font-size:14px"><span style="font-size:14px"><br></span></span></div><div><span style="font-size:14px">You acknowledge that the meaning of &quot;private&quot; is already confusing to newcomers from other languages. Having &quot;scoped&quot; would only reduce the confusion by providing what newcomers are likely already used to. If we could rename &quot;private&quot; to something else that clearly means &quot;file level access&quot;, there would be no confusion at all. Newcomers would just map &quot;private&quot; that they are used to in other languages to &quot;scoped&quot; in Swift.</span></div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px"><span style="font-size:14px"><span style="font-size:14px">&gt; Yes, all the other languages I have used have had Scoped Access Level, but I don’t mind &gt; Swift’s current file access level.</span></span><br></span></div><div><span style="font-size:14px"><span style="font-size:14px"><span style="font-size:14px"><br></span></span></span></div><div><span style="font-size:14px">Neither do I. I think it&#39;s great to have a file based access level. It might be better than &quot;friend&quot; in C++. &quot;scoped&quot; provides the functionality similar to &quot;private&quot; in C++ and is valuable because it would provide clarity of intent that can be enforced by the compiler and help ensure code correctness.</span></div><div><span style="font-size:14px"><br></span></div></div><br><div class="gmail_quote"><div dir="ltr">On Sun, Feb 28, 2016 at 2:08 PM David Hart via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div style="font-size:14px"><b>What is your evaluation of the proposal?</b><br></div><div style="font-size:14px"><br></div></div></div><div style="word-wrap:break-word"><div><div style="font-size:14px">-1</div><div style="font-size:14px"><br></div><div style="font-size:14px">I admit I was surprised by the semantics of private in Swift when I first discovered it, because I was used to private in other languages corresponding to Scoped Access Level. But I’ve not been overly bothered by it, and I’ve always kept a fairly strict one class per file anyway. I also don’t like that the proposal adds another keyword/layer of scoping. If people really wanted Scoped Access Level, I would have suggested modifying the meaning of private to correspond to Scoped Access Level and not add another keyword like this proposal.</div></div></div><div style="word-wrap:break-word"><div><div style="font-size:14px"><br></div><div style="font-size:14px"><b>Is the problem being addressed significant enough to warrant a change to Swift?</b><br></div><div style="font-size:14px"><br></div></div></div><div style="word-wrap:break-word"><div><div style="font-size:14px">I’d say no.</div></div></div><div style="word-wrap:break-word"><div><div style="font-size:14px"><br></div><div style="font-size:14px"><b>Does this proposal fit well with the feel and direction of Swift?</b><br></div><div style="font-size:14px"><br></div></div></div><div style="word-wrap:break-word"><div><div style="font-size:14px">I don’t find it worthwhile enough to warrant adding another scoping level and confusing newcomers.</div></div></div><div style="word-wrap:break-word"><div><div style="font-size:14px"><br></div><div style="font-size:14px"><b>If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?</b><br></div><div style="font-size:14px"><br></div></div></div><div style="word-wrap:break-word"><div><div style="font-size:14px">Yes, all the other languages I have used have had Scoped Access Level, but I don’t mind Swift’s current file access level.</div></div></div><div style="word-wrap:break-word"><div><div style="font-size:14px"><br></div><div style="font-size:14px"><b>How much effort did you put into your review? A glance, a quick reading, or an in-depth study?</b></div></div></div><div style="word-wrap:break-word"><div></div><div style="font-size:14px"><br></div><div style="font-size:14px">A thorough read.</div></div>_______________________________________________<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>