<div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">Wagner, the `extension` of `protocol` is never dynamic. It is `fail safe`. It means if you don&#39;t implement something, the compiler will use the implementation in the `protocol extension`. As in swift, struct and enum can also conform protocols.</span><br></div><div class="gmail_default" style="font-family:georgia,serif"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div><div class="gmail_default" style="font-family:georgia,serif"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">If you want the other way, you should do it in a base class, not in a protocol extension.</span></div><div class="gmail_default" style="font-family:georgia,serif"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div><div class="gmail_default" style="font-family:georgia,serif"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">Zhaoxin</span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 24, 2017 at 4:32 AM, Wagner Truppel via swift-users <span dir="ltr">&lt;<a href="mailto:swift-users@swift.org" target="_blank">swift-users@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"><div dir="auto"><span class=""><div></div><blockquote type="cite"><div><font color="#000000"><span style="background-color:rgba(255,255,255,0)">On 23 Jan 2017, at 19:56, Slava Pestov &lt;<a href="mailto:spestov@apple.com" target="_blank">spestov@apple.com</a>&gt; wrote:<br><br></span></font></div><blockquote type="cite"><blockquote type="cite"><font color="#000000"><span style="background-color:rgba(255,255,255,0)">class B: A {</span></font></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"><font color="#000000"><span style="background-color:rgba(255,255,255,0)"> var item: String { // subclass specialises &#39;item&#39; by &quot;overriding&quot; the protocol extension implementation<br></span></font></blockquote><font color="#000000"><span style="background-color:rgba(255,255,255,0)"><br>This is the problem. You’re not overriding the protocol extension version, you’re just shadowing it for the purposes of compile-time name lookup. Note that if you add the ‘override’ keyword here, the compiler complains because there’s nothing in the base class to override.</span></font></blockquote></blockquote><br></span><div>Yes, that&#39;s why I wrote overriding in quotes and also why I tried to use the word specialise in place of override. My beef is not really here; this really was just a preamble. My issue is with the fact that adding the declaration to the protocol doesn&#39;t solve the problem despite the fact that the property is then supposed to be dynamically dispatched but isn&#39;t.</div></div><br>______________________________<wbr>_________________<br>
swift-users mailing list<br>
<a href="mailto:swift-users@swift.org">swift-users@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-users" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-users</a><br>
<br></blockquote></div><br></div>