<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><br></div><div>On Oct 11, 2016, at 12:40, Anton Zhilin via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br><br></div><blockquote type="cite"><div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important">Hello Ted,<br>First of all, this topic belongs to reflection, which is specifically stated to be out of scope of Swift 4 Phase 1. So all considerations are purely theoretical for now.<br>That said, I also thought about this problem. The best I could imagine is something along the following lines:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code class="hljs language-swift" style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">var</span> builder = <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">StructBuilder</span>(name: <span class="hljs-string" style="color:rgb(221,17,68)">"Person"</span>)
builder.addProperty(name: <span class="hljs-string" style="color:rgb(221,17,68)">"name"</span>, type: <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">String</span>.<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">self</span>)
builder.addProperty(name: <span class="hljs-string" style="color:rgb(221,17,68)">"age"</span>, type: <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Int</span>.<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">self</span>)
builder.addComputedProperty(name: <span class="hljs-string" style="color:rgb(221,17,68)">"description"</span>, getter: { (this: <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Any</span>) -&gt; <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">String</span> <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">in</span> ... })
builder.addComformance(<span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">CustomStringConvertible</span>.<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">self</span>)
<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">let</span> type: <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Any</span>.<span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Type</span> = builder.build()
</code></pre>
<p style="margin:0px 0px 1.2em!important">Obviously, to interact with such dynamic types and their objects, we need the whole working reflection system that we don’t have right now.</p></div></div></blockquote>I *think* that's only true for non-generic code, and types that aren't subclasses... I think...<div><br></div><div>Anyway, I'm starting to wonder if some code I'm trying to write might be impossible without either this feature, or some/all of the stuff from the generics manifesto. So put me down as, in principle, a strong +1 (pending details of the proposal when it actually gets written for Swift 10).</div><div><br></div><div>- Dave Sweeris&nbsp;</div></body></html>