<div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif"><div class="gmail_default" style="font-size:13px">I got this by discussions in another thread of swift-evolution.  The result is interesting. I don&#39;t know if it should be treat as a bug.</div><div class="gmail_default" style="font-size:13px"><br></div><div class="gmail_default" style="font-family:arial,sans-serif;font-size:13px"><span class="im"><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal;color:rgb(187,44,162)">protocol<span style="color:rgb(0,0,0)"> Good {</span></p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal">    <span style="color:rgb(187,44,162)">func</span> printSomething(something:<span style="color:rgb(112,61,170)">String</span>)</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal">}</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal;min-height:13px"><br></p></span><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal;color:rgb(187,44,162)">extension<span style="color:rgb(0,0,0)"> </span><span style="color:rgb(79,129,135)">Good</span><span style="color:rgb(0,0,0)"> {</span></p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal">    <span style="color:rgb(187,44,162)">func</span> printSomething() { <span style="color:rgb(187,44,162)">self</span>.<span style="color:rgb(49,89,93)">printSomething</span>(<span style="color:rgb(209,47,27)">&quot;Good&quot;</span>) }</p><span class="im"><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal">}</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal;min-height:13px"><br></p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal"><span style="color:rgb(187,44,162)">struct</span> Name:<span style="color:rgb(79,129,135)">Good</span> {</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal">    <span style="color:rgb(187,44,162)">func</span> printSomething(something: <span style="color:rgb(112,61,170)">String</span> = <span style="color:rgb(209,47,27)">&quot;John&quot;</span>) {</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal">        <span style="color:rgb(61,29,129)">print</span>(something)</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal">    }</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal">}</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal;min-height:13px"><br></p></span><span class="im"><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal"><span style="color:rgb(187,44,162)">struct</span> Talk:<span style="color:rgb(79,129,135)">Good</span> {</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal">    <span style="color:rgb(187,44,162)">func</span> printSomething(something: <span style="color:rgb(112,61,170)">String</span> = <span style="color:rgb(209,47,27)">&quot;Hahaha&quot;</span>) {</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal">        <span style="color:rgb(61,29,129)">print</span>(something)</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal">    }</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal">}</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal;min-height:13px"><br></p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal"><span style="color:rgb(187,44,162)">var</span> protocols:[<span style="color:rgb(79,129,135)">Good</span>] = [<span style="color:rgb(79,129,135)">Name</span>(), <span style="color:rgb(79,129,135)">Talk</span>()]</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal;min-height:13px"><br></p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal;color:rgb(79,129,135)"><span style="color:rgb(187,44,162)">for</span><span style="color:rgb(0,0,0)"> p </span><span style="color:rgb(187,44,162)">in</span><span style="color:rgb(0,0,0)"> </span>protocols<span style="color:rgb(0,0,0)"> {</span></p></span><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal;color:rgb(0,132,0)"><span style="color:rgb(0,0,0)">    p.</span><span style="color:rgb(49,89,93)">printSomething</span><span style="color:rgb(0,0,0)">() </span>// Good, Good instead of John, Hahaha</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal">}</p><p style="font-family:Menlo;margin:0px;font-size:11px;line-height:normal"><br></p><p style="margin:0px;line-height:normal"><font face="georgia, serif">As you can see, the final result is &quot;Good, Good&quot;, not as I expected &quot;John, Hahaha&quot;, is that right or is it a bug?</font></p><p style="margin:0px;line-height:normal"><font face="georgia, serif"><br></font></p><p style="margin:0px;line-height:normal"><font face="georgia, serif">zhaoxin</font></p></div></div></div>