+1 very handy to associate types together<br><br>On Friday, 29 April 2016, Michael Peternell via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I think that would be a good feature.<br>
<br>
&gt; Am 28.04.2016 um 19:15 schrieb Brad Hilton via swift-evolution &lt;<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;swift-evolution@swift.org&#39;)">swift-evolution@swift.org</a>&gt;:<br>
&gt;<br>
&gt; Type nesting allows some convenient and straightforward semantics that we see inside the Swift standard library such as views on String like String.CharacterView, String.UnicodeScalarView, etc. However a protocol cannot be nested in a type and gives a non-obvious error that the “Declaration is only valid at file scope.” Just as other nested types allow proper contextual scoping, a nested protocol could make a lot sense for a number of patterns. For example, there are many “Delegate” protocols throughout the Cocoa frameworks. Here’s a controller/delegate pattern before and after type nesting:<br>
&gt;<br>
&gt; // Without type nesting<br>
&gt;<br>
&gt; protocol MyControllerDelegate : class {<br>
&gt;<br>
&gt; }<br>
&gt;<br>
&gt; class MyController {<br>
&gt;<br>
&gt;     weak var delegate: MyControllerDelegate?<br>
&gt;<br>
&gt; }<br>
&gt;<br>
&gt; // With type nesting<br>
&gt;<br>
&gt; class MyController {<br>
&gt;<br>
&gt;     weak var delegate: Delegate?<br>
&gt;<br>
&gt;     protocol Delegate : class {<br>
&gt;<br>
&gt;     }<br>
&gt;<br>
&gt; }<br>
&gt;<br>
&gt; Though the change is mostly semantics, it does allow an explicit association between My Controller and the Delegate instead of only a named association. It also cleans up the module name space like other nested types and makes associated protocols more discoverable in my opinion.<br>
&gt;<br>
&gt; I’d love to hear everyone’s thoughts.<br>
&gt;<br>
&gt; Brad Hilton<br>
&gt; _______________________________________________<br>
&gt; swift-evolution mailing list<br>
&gt; <a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;swift-evolution@swift.org&#39;)">swift-evolution@swift.org</a><br>
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;swift-evolution@swift.org&#39;)">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote><br><br>-- <br>-- Howard.<br>