<div dir="ltr">Observations about difining an object<div><ul><li>Structs can&#39;t inherit and classes shouldn&#39;t inherit, final concrete types should be flat</li><li>Protocols need to be adopted by the final concrete type, otherwise constraint specializations aren&#39;t correctly applied</li></ul><div>This creates a really ugly code duplication situation when you have multiple object variants that adopt the same protocols.</div></div><div><br></div><div>The storage declaration, common initialization, common didSet, etc... for protocol member variables must be duplicated for every instance. </div><div>If I have 20 objects that have the same base set of 15 vars, this turns into a maintenance/bug nightmare.</div><div><br></div><div>I noticed the use of GYB in the swift source code. </div><div>I don&#39;t want to involve python in anything I do, and I don&#39;t want to mess up my code/build with all that stuff.</div><div><br></div><div>It seems that an easy workaround would be an #include statement. </div><div>The boiler plate can be put in a separate file and included wherever it&#39;s needed. </div><div>One piece of code, one tool, one set of bugs.</div><div><br></div><div>Has this been considered? Or is there a better way to handle this problem.</div><div><br></div><div>Thanks, Ed</div></div>