<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">My message bounced on account of size. I’m sorry if you receive multiple copies of this:</div><br class=""><blockquote type="cite" class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><i class="">“If Limb is a Component, then a Spider entity needs eight of them…”</i></div></div></blockquote><div class="">That’s a fair question to ask. </div><div class=""><br class=""></div><div class="">My intuition is that sporting a `Component` answers a question, “does it have this feature?” In the case of self-propelling creatures, you’d probably ask, “does it have legs”. On the other hand, asking, “does it (still) have a front left leg?” assumes that in general this entity has legs you can ask questions about. All of which would suggest that `SpiderLegs` component would be sufficient for most spider games…</div><div class=""><br class=""></div><div class="">As for the `add` and `remove` methods, I’d probably also return the removed component (if any):</div><div class=""><br class=""></div><div class=""><div class="" style="margin: 0px; font-size: 12px; line-height: normal; font-family: 'Source Code Pro';"><div class="" style="margin: 0px; line-height: normal;"><span class="" style="font-variant-ligatures: no-common-ligatures;"><span class="Apple-tab-span" style="white-space: pre;">        </span></span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(200, 172, 229);">mutating</span><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(200, 172, 229);">func</span><span class="" style="font-variant-ligatures: no-common-ligatures;"> remove<T: </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(73, 162, 210);">Component</span><span class="" style="font-variant-ligatures: no-common-ligatures;">>(</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(200, 172, 229);">_</span><span class="" style="font-variant-ligatures: no-common-ligatures;">: </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(73, 162, 210);">T</span><span class="" style="font-variant-ligatures: no-common-ligatures;">.Type) -> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(73, 162, 210);">T</span><span class="" style="font-variant-ligatures: no-common-ligatures;">? {</span></div><div class="" style="margin: 0px; line-height: normal; color: rgb(145, 84, 15);"><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);"><span class="Apple-tab-span" style="white-space: pre;">                </span></span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(200, 172, 229);">return</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(143, 121, 58);">components</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);">.</span><span class="" style="font-variant-ligatures: no-common-ligatures;">removeValueForKey</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);">(</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(73, 162, 210);">T</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);">.name) </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(200, 172, 229);">as</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);">? </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(73, 162, 210);">T</span></div><div class="" style="margin: 0px; line-height: normal;"><span class="" style="font-variant-ligatures: no-common-ligatures;"><span class="Apple-tab-span" style="white-space: pre;">        </span>}</span></div><div class=""><span class="" style="font-variant-ligatures: no-common-ligatures;"><br class=""></span></div></div></div><div class="">milos</div><div><blockquote type="cite" class=""><div class="">On 8 Apr 2016, at 15:30, Adriano Ferreira <<a href="mailto:adriano.ferreira@me.com" class="">adriano.ferreira@me.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Hi Milos,</div><div class=""><br class=""></div><div class="">Thanks for getting back to me this quickly.</div><div class=""><br class=""></div><div class="">Well, this part specifically was more of a curiosity based on Jens’ comment:</div><div class=""><br class=""></div><div class=""><i class="">“If Limb is a Component, then a Spider entity needs eight of them…”</i></div><div class=""><br class=""></div><div class="">I also confess I’m unsure about this… so please don’t bother then.</div><div class=""><br class=""></div><div class="">Looking forward to hearing your thoughts on the functions though.</div><div class=""><br class=""></div><div class="">Cheers,</div><div class=""><br class=""></div><div class="">— A</div></div></div></blockquote></div><br class=""></body></html>