<div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif">See the code:</div><div class="gmail_default" style="font-family:georgia,serif"><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_default" style="font-family:georgia,serif"><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(187,44,162)"><span style="">protocol</span><span style="color:rgb(0,0,0)"> Foo {</span></p></div><div class="gmail_default" style="font-family:georgia,serif"><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="">    </span><span style="color:rgb(187,44,162)">func</span><span style=""> instance() -&gt; </span><span style="color:rgb(112,61,170)">Self</span></p></div><div class="gmail_default" style="font-family:georgia,serif"><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="">}</span></p></div><div class="gmail_default" style="font-family:georgia,serif"><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;min-height:13px"><br></p></div><div class="gmail_default" style="font-family:georgia,serif"><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="color:rgb(187,44,162)">class</span><span style=""> Bar: </span><span style="color:rgb(79,129,135)">Foo</span><span style=""> {</span></p></div><div class="gmail_default" style="font-family:georgia,serif"><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="">    </span><span style="color:rgb(187,44,162)">func</span><span style=""> </span>instance<span style="">() -&gt; </span><span style="color:rgb(112,61,170)">Self</span><span style=""> {</span></p></div><div class="gmail_default" style="font-family:georgia,serif"><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,132,0)"><span style="color:rgb(0,0,0)">        </span><span style="color:rgb(187,44,162)">return</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(187,44,162)">self</span><span style="color:rgb(0,0,0)"> </span><span style="">// Declaration: let `self`: Self</span></p></div><div class="gmail_default" style="font-family:georgia,serif"><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="">    }</span></p><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="">    </span><span style="color:rgb(187,44,162)">func</span><span style=""> other() {</span></p><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,132,0)"><span style="color:rgb(0,0,0)">        </span><span style="color:rgb(187,44,162)">let</span><span style="color:rgb(0,0,0)"> i = </span><span style="color:rgb(187,44,162)">self</span><span style="color:rgb(0,0,0)"> </span><span style="">// Declaration: let `self`: Bar</span></p><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo">

</p><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="">    }</span></p></div><div class="gmail_default" style="font-family:georgia,serif"><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="">}</span></p></div></blockquote><div class="gmail_default"><p style="margin:0px;line-height:normal;min-height:13px"><span style=""></span></p></div><div class="gmail_default"><p style="margin:0px;line-height:normal;min-height:13px"><font face="georgia, serif">How does it happen?</font></p><p style="margin:0px;line-height:normal;min-height:13px"><font face="georgia, serif"><br></font></p><p style="margin:0px;line-height:normal;min-height:13px"><font face="georgia, serif">Zhaoxin</font></p></div><div class="gmail_default" style="font-family:georgia,serif"><p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(187,44,162)">













</p></div></div>