<div dir="ltr">You can already do something like this as well. Sure it&#39;s a bit verbose, but for the cases where you need to ignore the associated value you can do a one-to-one mapping. You can then simply do a <font face="monospace, monospace">switch(enumVar.type()) { ... }.</font><div><div><br></div><div><div><font face="monospace, monospace">enum EnumType {</font></div><div><font face="monospace, monospace">    </font></div><div><font face="monospace, monospace">    enum EnumTypeType {</font></div><div><font face="monospace, monospace">        case TypeA</font></div><div><font face="monospace, monospace">        case TypeB</font></div><div><font face="monospace, monospace">        case TypeC</font></div><div><font face="monospace, monospace">        case TypeD</font></div><div><font face="monospace, monospace">    }</font></div><div><font face="monospace, monospace">    </font></div><div><font face="monospace, monospace">    case TypeA(String)</font></div><div><font face="monospace, monospace">    case TypeB(Bool)</font></div><div><font face="monospace, monospace">    case TypeC()</font></div><div><font face="monospace, monospace">    case TypeD(String)</font></div><div><font face="monospace, monospace">    </font></div><div><font face="monospace, monospace">    func type() -&gt; EnumTypeType {</font></div><div><font face="monospace, monospace">        switch(self) {</font></div><div><font face="monospace, monospace">        case .TypeA(_):</font></div><div><font face="monospace, monospace">            return .TypeA</font></div><div><font face="monospace, monospace">        case .TypeB(_):</font></div><div><font face="monospace, monospace">            return .TypeB</font></div><div><font face="monospace, monospace">        case .TypeC():</font></div><div><font face="monospace, monospace">            return .TypeC</font></div><div><font face="monospace, monospace">        case TypeD(_):</font></div><div><font face="monospace, monospace">            return .TypeD</font></div><div><font face="monospace, monospace">        }</font></div><div><font face="monospace, monospace">    }</font></div><div><font face="monospace, monospace">}</font></div></div></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><p><b><span style="font-size:9.0pt;font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;;color:gray" lang="EN-CA">Sandy Chapman</span></b><i><span style="font-size:9.0pt;font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;;color:gray" lang="FR"><br>Technical Team Lead</span></i><b><span style="font-size:9.0pt;font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;" lang="EN-CA"></span><i><span lang="EN-CA"> <br></span></i></b></p><p><b><span style="font-size:9.0pt;font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;;color:gray" lang="EN-CA">Lixar I.T. Inc.<br></span></b><span style="font-size:9.0pt;font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;;color:gray" lang="EN-CA">T: 902.405.4443<br>F: 902.405.4435</span><span style="font-size:9.0pt;font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;" lang="EN-CA"></span></p><p><span><span style="font-size:9.0pt;font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;" lang="FR"><a href="mailto:schapman@lixar.com" target="_blank">schapman@lixar.com</a></span></span><span><span lang="FR"></span></span><span style="font-size:9.0pt;font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;;color:blue" lang="FR"><a href="http://www.lixar.com/" target="_blank"><br>www.lixar.com</a></span><span style="font-size:9.0pt"></span><span style="color:#1f497d"> <br></span></p><p><img src="cid:image001.jpg@01CFCE9B.0CCA9710" alt="Description: cid:image003.gif@01CB115A.001B0250" border="0" height="50" width="141"></p></div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On Fri, Dec 11, 2015 at 8:51 AM, Al Skipp via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>I don’t think this suggestion would work in practice. It’s the equivalent of trying to construct a struct value with non-optional properties, but without providing any init parameters, it would result in an invalid value. If your proposal were possible I think it would cause trouble with pattern matching enums too. In a switch statement that expects to bind to associated values, what happens when it receives an enum that should have associated values, but they are not present?</div><div><br></div><br><div><blockquote type="cite"><div>On 11 Dec 2015, at 04:53, Evan Maloney &lt;<a href="mailto:emaloney@gilt.com" target="_blank">emaloney@gilt.com</a>&gt; wrote:</div><br><div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">You&#39;re referring to the ability to test whether an existing enum value is of a given case regardless of the contents of its associated values. In other words,<span> </span><i>after</i><span> </span>a value has been created, you can test for whether it is of a specific case while ignoring any associated values.</div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br></div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div>I&#39;m talking about the ability to create a value that represents the generic concept of an enum case that has associated values, but without actually specifying any associated values.</div></div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br></div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">In Swift right now, you can programmatically represent an enum case that has associated values<span> </span><i>only by first supplying those associated values</i>.</div></div></blockquote></div><br>
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=8hDMFb8-2FbPLa52yA9R-2BDVo2qLHd3t4qTaH-2B-2F1yJ8QYdhMPTY6-2B-2FVXrNaamX9AKMlh5ogD7oyTo4-2BbmORncmjpchtNfSKoX2Cb3X2eDwH-2FYH9mv2feMxNnqtcW5-2BXCMv6QeN3gIW6VhIME8DHRFxKF2a7rR6de6Iqp9i2rBeHijWOCPxUiyagIDRc9jbNTjttRoK6M-2Bvg2xo9hBAe5ZgfAK-2FfJ2YVDhCg39KLWka9MdU-3D" alt="" width="1" height="1" border="0" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important">
</div>
<br>_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br></blockquote></div><br></div>

<br>
<br>