<div dir="ltr"><font face="monospace, monospace">This code example:</font><div><font face="monospace, monospace"><br></font></div><div><div><font face="monospace, monospace">if someInstance.dynamicType === someInstance.self {</font></div><div><font face="monospace, monospace">    print(&quot;The dynamic and static type of someInstance are the same&quot;)</font></div><div><font face="monospace, monospace">} else {</font></div><div><font face="monospace, monospace">    print(&quot;The dynamic and static type of someInstance are different&quot;)</font></div><div><font face="monospace, monospace">}</font></div><div><font face="monospace, monospace">// prints &quot;The dynamic and static type of someInstance are different”</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">Does not compile on Linux.   It also is quite confusing - comparing a type === an instance?  It compiles on my mac but is it using some objc weirdness or simply a bug? </font></div></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">I think the example means to do something like this:</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><div>// Note: === won&#39;t compile</div><div>if SomeBaseClass.self == someInstance.dynamicType {</div><div>    print(&quot;is base&quot;)</div><div>} else if SomeSubClass.self == someInstance.dynamicType {</div><div>    print(&quot;is subclass&quot;)</div><div>} else {</div><div>    print(&quot;is neither!&quot;)</div><div>}</div><div><br></div><div>One other minor typo:</div><div><br></div><div><div>“// and the runtime type of someInstance is SomeBaseClass”</div><div><br></div><div>should be SomeSubClass.</div><div><br></div></div><div><br></div><div><br></div></font></div></div>