<html><head><meta http-equiv="Content-Type" content="text/html charset=gb2312"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Thanks! Waiting for the new version.</div><br class=""><div><blockquote type="cite" class=""><div class="">在 2017年2月20日,上午7:42,Xiaodi Wu &lt;<a href="mailto:xiaodi.wu@gmail.com" class="">xiaodi.wu@gmail.com</a>&gt; 写道:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">That is a new feature in Swift 3.1.<div class=""><br class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Sun, Feb 19, 2017 at 5:32 PM, 曹剑楠 <span dir="ltr" class="">&lt;<a href="mailto:frogcjn@163.com" target="_blank" class="">frogcjn@163.com</a>&gt;</span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="">Sorry about my typo:<div class=""><br class=""></div><div class=""><span class=""><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code';min-height:13px" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""></span><div style="word-wrap:break-word" class=""><div class=""><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><div style="margin:0px;line-height:normal;color:rgb(52,149,175)" class=""><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">struct</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;Album</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;{</span></div>&nbsp; &nbsp;&nbsp;<span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span>&nbsp;<span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">let</span>&nbsp;sectionedMediaIte<wbr class="">mInfos: [<span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">Sectioned</span>&lt;<span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">MediaItemInfo</span>&gt;]?}<div class=""><br class=""></div><div class=""><div style="margin:0px;line-height:normal" class=""><br class=""></div></div><div class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">struct</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;Sectioned&lt;Item&gt; :&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">SectionProtocol</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;{</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">let</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;title:&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">String</span><span style="font-variant-ligatures:no-common-ligatures" class="">?</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">let</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;items: [</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">Item</span><span style="font-variant-ligatures:no-common-ligatures" class="">]</span></div><div style="margin:0px;line-height:normal;min-height:13px" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;&nbsp; &nbsp;</span><br class="m_-160934208573440586m_715390691247048198webkit-block-placeholder"></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">init</span><span style="font-variant-ligatures:no-common-ligatures" class="">(</span><span style="font-variant-ligatures:no-common-ligatures" class="">) {</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">items</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;=&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures" class="">[]</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">title</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;= nil</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp;&nbsp;}</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div></span></div></span></div></div></blockquote></div></div></div></div></div></div><br class=""></div></span><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">extension</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">Array</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">where</span><span style="font-variant-ligatures:no-common-ligatures" class=""> Element == Sectioned {</span></div><span class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: 'Fira Code'; min-height: 13px;" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;&nbsp; &nbsp;</span><br class="m_-160934208573440586webkit-block-placeholder"></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">var</span><span style="font-variant-ligatures:no-common-ligatures" class=""> itemsCount: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">Int</span><span style="font-variant-ligatures:no-common-ligatures" class=""> {</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">return</span><span style="font-variant-ligatures:no-common-ligatures" class=""> reduce(0) { (result, section) </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">in</span><span style="font-variant-ligatures:no-common-ligatures" class=""> result + section.items.count }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; }</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: 'Fira Code'; min-height: 13px;" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;&nbsp; &nbsp;</span><br class="m_-160934208573440586webkit-block-placeholder"></div></span><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">var</span><span style="font-variant-ligatures:no-common-ligatures" class=""> items: [</span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">Element</span><span style="font-variant-ligatures:no-common-ligatures" class="">.</span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">Item</span><span style="font-variant-ligatures:no-common-ligatures" class="">] {</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">return</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">self</span><span style="font-variant-ligatures:no-common-ligatures" class="">.flatMap { $0.items }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">Allow extension Array with strict its Element with a struct type (may be generic) is highly wanted feature.</span></div><div class=""><div class="h5"><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div class=""><blockquote type="cite" class=""><div class="">在 2017年2月20日,上午7:28,曹剑楠 &lt;<a href="mailto:frogcjn@163.com" target="_blank" class="">frogcjn@163.com</a>&gt; 写道:</div><br class="m_-160934208573440586Apple-interchange-newline"><div class=""><div style="word-wrap:break-word" class=""><div class=""><br class=""></div><div class="">OK, my fault. That solved the problem.</div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><div style="margin:0px;line-height:normal;color:rgb(52,149,175)" class=""><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">var</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;items: [</span><span style="font-variant-ligatures:no-common-ligatures" class="">Element</span><span style="font-variant-ligatures:no-common-ligatures" class="">.</span><span style="font-variant-ligatures:no-common-ligatures" class="">SectionItemType</span><span style="font-variant-ligatures:no-common-ligatures" class="">]</span></div></span></div></div></blockquote></div></div></div></blockquote><div class=""><br class=""></div>I should use this.<br class=""><br class=""></div><div class="">How about to allow using generic type Section directly instead of declare a protocol</div><div class=""><br class=""></div><div class="">```Swift</div><div class=""><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">extension</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">Array</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">where</span><span style="font-variant-ligatures:no-common-ligatures" class=""> Element == Section {</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code';min-height:13px" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;&nbsp; &nbsp;</span><br class="m_-160934208573440586webkit-block-placeholder"></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">var</span><span style="font-variant-ligatures:no-common-ligatures" class=""> itemsCount: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">Int</span><span style="font-variant-ligatures:no-common-ligatures" class=""> {</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">return</span><span style="font-variant-ligatures:no-common-ligatures" class=""> reduce(0) { (result, section) </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">in</span><span style="font-variant-ligatures:no-common-ligatures" class=""> result + section.items.count }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code';min-height:13px" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;&nbsp; &nbsp;</span><br class="m_-160934208573440586webkit-block-placeholder"></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code';color:rgb(52,149,175)" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">var</span><span style="font-variant-ligatures:no-common-ligatures" class=""> items: [</span><span style="font-variant-ligatures:no-common-ligatures" class="">Element</span><span style="font-variant-ligatures:no-common-ligatures" class="">.</span><span style="font-variant-ligatures:no-common-ligatures" class="">SectionItemType</span><span style="font-variant-ligatures:no-common-ligatures" class="">] {</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">return</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">self</span><span style="font-variant-ligatures:no-common-ligatures" class="">.flatMap { $0.items }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; }</span></div></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">```</span></div><br class=""><div class=""><blockquote type="cite" class=""><div class="">在 2017年2月20日,上午7:14,Xiaodi Wu &lt;<a href="mailto:xiaodi.wu@gmail.com" target="_blank" class="">xiaodi.wu@gmail.com</a>&gt; 写道:</div><br class="m_-160934208573440586Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote">On Sun, Feb 19, 2017 at 5:04 PM, 曹剑楠 via swift-evolution <span dir="ltr" class="">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt;</span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">Hi All,</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">I’m coding for section like data structure.&nbsp;</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">For example:</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">I have an Album struct, which has many MediaItems.</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">It has a sectioned property called "sectionedMediaItemInfos", which is an array of sections.</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><div class=""><span style="font-variant-ligatures:no-common-ligatures" class="">Each section represents for a disc, and&nbsp;</span>has an "items" array contains all MedaItems in that disc.</div><div class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div class="">The define code is like:</div><div class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div class=""><span style="font-variant-ligatures:no-common-ligatures" class="">```Swift</span></div></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><div style="margin:0px;line-height:normal;color:rgb(52,149,175)" class=""><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">struct</span><span style="font-variant-ligatures:no-common-ligatures" class=""> Album</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;{</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">let</span><span style="font-variant-ligatures:no-common-ligatures" class=""> sectionedMediaItemInfos: [</span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">Sectioned</span><span style="font-variant-ligatures:no-common-ligatures" class="">&lt;</span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">MediaItemInfo</span><span style="font-variant-ligatures:no-common-ligatures" class="">&gt;]?</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div><div class=""><br class=""></div><div class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">struct</span><span style="font-variant-ligatures:no-common-ligatures" class=""> Sectioned&lt;Item&gt; : </span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">SectionProtocol</span><span style="font-variant-ligatures:no-common-ligatures" class=""> {</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">let</span><span style="font-variant-ligatures:no-common-ligatures" class=""> title: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">String</span><span style="font-variant-ligatures:no-common-ligatures" class="">?</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">let</span><span style="font-variant-ligatures:no-common-ligatures" class=""> items: [</span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">Item</span><span style="font-variant-ligatures:no-common-ligatures" class="">]</span></div><div style="margin:0px;line-height:normal;min-height:13px" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;&nbsp; &nbsp;</span><br class="m_-160934208573440586m_715390691247048198webkit-block-placeholder"></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">init</span><span style="font-variant-ligatures:no-common-ligatures" class="">(</span><span style="font-variant-ligatures:no-common-ligatures" class="">) {</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">items</span><span style="font-variant-ligatures:no-common-ligatures" class=""> = </span><span style="font-variant-ligatures:no-common-ligatures" class="">[]</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">title</span><span style="font-variant-ligatures:no-common-ligatures" class=""> = nil</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; }</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div></span></div></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">protocol</span><span style="font-variant-ligatures:no-common-ligatures" class=""> SectionProtocol {</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">associatedtype</span><span style="font-variant-ligatures:no-common-ligatures" class=""> SectionItemType</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">var</span><span style="font-variant-ligatures:no-common-ligatures" class=""> items: [SectionItemType] { </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">get</span><span style="font-variant-ligatures:no-common-ligatures" class=""> }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">```</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">Now I want to define some extra properties for sections array</span>, like</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">"sectionMediaItemInfos"."items<wbr class="">Count" that count all items in each sections.</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">So I can write that extension:</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code';min-height:13px" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""></span><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code';min-height:13px" class="">```Swift</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">extension</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">Array</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">where</span><span style="font-variant-ligatures:no-common-ligatures" class=""> Element : SectionProtocol {</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code';min-height:13px" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;&nbsp; &nbsp;</span><br class="m_-160934208573440586m_715390691247048198webkit-block-placeholder"></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">var</span><span style="font-variant-ligatures:no-common-ligatures" class=""> itemsCount: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">Int</span><span style="font-variant-ligatures:no-common-ligatures" class=""> {</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">return</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">reduce</span><span style="font-variant-ligatures:no-common-ligatures" class="">(0) { (result, section) </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">in</span><span style="font-variant-ligatures:no-common-ligatures" class=""> result + section.</span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">items</span><span style="font-variant-ligatures:no-common-ligatures" class="">.</span><span style="font-variant-ligatures:no-common-ligatures;color:#3495af" class="">count</span><span style="font-variant-ligatures:no-common-ligatures" class=""> }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">```</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">So I can get my itemsCount with code like:</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">```Swift</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">album.sectionedMediaItemInfos.<wbr class="">itemsCount</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">```</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">That looks good.</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">Then I want to define code to return all items in this sectioned property.</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">```Swift</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span>&nbsp;<span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">extension</span>&nbsp;<span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">Array</span>&nbsp;<span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">where</span>&nbsp;E<wbr class="">lement : SectionProtocol {</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><div style="margin:0px;line-height:normal;color:rgb(52,149,175)" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">var</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;items: [</span><span style="font-variant-ligatures:no-common-ligatures" class="">SectionProtocol</span><span style="font-variant-ligatures:no-common-ligatures" class="">.</span><span style="font-variant-ligatures:no-common-ligatures" class="">SectionItemTy<wbr class="">pe</span><span style="font-variant-ligatures:no-common-ligatures" class="">] {</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">return</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;.flatMap { $0.items }</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; }</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">```</span></div></span></div></div></blockquote><div class="">&nbsp;</div><div class="">Sorry, I'm reading this quickly, but I'm confused as to why you're not writing `var items: [Element.SectionItemType]`. That seems to be what you want, no? `SectionProtocol.<wbr class="">SectionItemType` has no constraints and, even if the grammar allowed you to write it, would have to be equivalent to `Any`.</div><div class=""><br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""></span></div><div style="margin:0px;line-height:normal" class="">This doesn’t work. It reported as "Cannot use associated type 'SectionItemType' outside of its protocol"</div></span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">The only way to achieve my goals is to untyped the extended "items" property:</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">```Swift</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span>&nbsp;<span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">extension</span>&nbsp;<span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">Array</span>&nbsp;<span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">where</span>&nbsp;E<wbr class="">lement : SectionProtocol {</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><div style="margin:0px;line-height:normal;color:rgb(52,149,175)" class=""><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">var</span><span style="font-variant-ligatures:no-common-ligatures" class=""> items: [</span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">Any</span><span style="font-variant-ligatures:no-common-ligatures" class="">] {</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">return</span><span style="font-variant-ligatures:no-common-ligatures" class=""> </span><span style="font-variant-ligatures:no-common-ligatures;color:#0433ff" class="">self</span><span style="font-variant-ligatures:no-common-ligatures" class="">.flatMap { $0.items }</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; }</span></div></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">```</span></div></span></div></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class="">Which is not perfect for this case.</div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">So in this special case, I think allow use associated type outside of its protocol is necessary.</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">And we may allow define protocol with generic type. That would be more convenient.</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><br class=""></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">```Swift</span></div><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal;color:rgb(52,149,175)" class=""><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">struct</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;Album</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;{</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">let</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;sectionedMediaIte<wbr class="">mInfos: [</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">Sectioned</span><span style="font-variant-ligatures:no-common-ligatures" class="">&lt;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">MediaItemInfo</span><span style="font-variant-ligatures:no-common-ligatures" class="">&gt;]?</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div><div class=""><br class=""></div><div class=""><div style="margin:0px;line-height:normal" class=""><br class=""></div></div><div class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">struct</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;Sectioned&lt;Item&gt; :&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">SectionProtocol</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;{</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">let</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;title:&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">String</span><span style="font-variant-ligatures:no-common-ligatures" class="">?</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">let</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;items: [</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">Item</span><span style="font-variant-ligatures:no-common-ligatures" class="">]</span></div><div style="margin:0px;line-height:normal;min-height:13px" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;&nbsp; &nbsp;</span><br class="m_-160934208573440586m_715390691247048198webkit-block-placeholder"></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">init</span><span style="font-variant-ligatures:no-common-ligatures" class="">(</span><span style="font-variant-ligatures:no-common-ligatures" class="">) {</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">items</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;=&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures" class="">[]</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">title</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;= nil</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp;&nbsp;}</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div></span></div></div><div style="margin:0px;line-height:normal" class=""><br class=""></div><div style="margin:0px;line-height:normal" class=""><div class=""><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">protocol</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;SectionProtoco<wbr class="">l&lt;SectionItemType&gt; {</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">var</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;items: [SectionItemType] {&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">get</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;}</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div></div><div class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div></div><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">public</span>&nbsp;<span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">extension</span>&nbsp;<span style="font-variant-ligatures:no-common-ligatures;color:rgb(52,149,175)" class="">Array</span>&nbsp;<span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">where</span>&nbsp;E<wbr class="">lement :&nbsp;SectionProtocol&nbsp;{</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp;&nbsp;</span><span style="color:rgb(4,51,255);font-variant-ligatures:no-common-ligatures" class="">var</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;items: [<font color="#0433ff" class="">Element.</font></span>SectionItemType] {</div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">return</span><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp;</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(4,51,255)" class="">self</span><span style="font-variant-ligatures:no-common-ligatures" class="">.flatMap { $0.items }</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">&nbsp; &nbsp; }</span></div></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div></span></div></div><div style="margin:0px;line-height:normal" class=""><br class=""></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">```</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">Thank all!</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">Jiannan</span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div><div style="margin:0px;line-height:normal" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div></span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:'Fira Code'" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><br class=""></span></div></div><br class="">______________________________<wbr class="">_________________<br class="">
swift-evolution mailing list<br class="">
<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a><br class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailma<wbr class="">n/listinfo/swift-evolution</a><br class="">
<br class=""></blockquote></div><br class=""></div></div>
</div></blockquote></div><br class=""></div></div></blockquote></div><br class=""></div></div></div></div></blockquote></div><br class=""></div></div></div>
</div></blockquote></div><br class=""></body></html>