<div dir="ltr"><div><div><div><div><div>Thanks for the explanation Mateusz, I think I understand. So the enum still only has 3 cases, SMALL, MEDIUM, and LARGE, but an instance also has some properties?<br></div><br></div>So some code to use it might be:<br></div>var aFormat = Format.LARGE<br></div>aFormat.width = 150 // aFormat is still Format.LARGE - this doesn&#39;t change<br></div><div><br></div>Is that right?<br></div><br><div class="gmail_quote"><div dir="ltr">On Mon, 10 Oct 2016 at 09:06 Mateusz Malczak via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br class="gmail_msg">
&gt; Perhaps it is a bit ugly, but I don’t know if allowing stored properties on<br class="gmail_msg">
&gt; enums is the solution: that looks very ugly to me too.<br class="gmail_msg">
<br class="gmail_msg">
That may look ugly, but can be very useful, if only you think<br class="gmail_msg">
rawValue&#39;s are useful then you should also agree that stored<br class="gmail_msg">
properties would be useful :)<br class="gmail_msg">
<br class="gmail_msg">
--<br class="gmail_msg">
| Mateusz Malczak<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
2016-10-10 9:26 GMT+02:00 David Hart via swift-evolution<br class="gmail_msg">
&lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt;:<br class="gmail_msg">
&gt; Perhaps it is a bit ugly, but I don’t know if allowing stored properties on<br class="gmail_msg">
&gt; enums is the solution: that looks very ugly to me too.<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; On 10 Oct 2016, at 02:36, Erica Sadun via swift-evolution<br class="gmail_msg">
&gt; &lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; I would love to be able to have stored properties in addition to the varying<br class="gmail_msg">
&gt; elements.<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; Now, I end up creating a secondary struct T and doing case a(T, whatever),<br class="gmail_msg">
&gt; b(T, whatever), c(T, whatever), etc. where the same associated structure is<br class="gmail_msg">
&gt; every case, *or* I end up putting the enum into a struct which means the<br class="gmail_msg">
&gt; guiding semantics are the struct and not the enumeration. Both approaches<br class="gmail_msg">
&gt; are ugly.<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; -- E<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; On Oct 9, 2016, at 6:03 PM, Jay Abbott via swift-evolution<br class="gmail_msg">
&gt; &lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; Mateusz,<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; To me, &quot;Enumeration defines a type with well defined set of possible values&quot;<br class="gmail_msg">
&gt; seems to contradict the idea of having properties that can have different<br class="gmail_msg">
&gt; values. What could you do with this special enum - what would the code that<br class="gmail_msg">
&gt; uses it look like?<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; On Sun, 9 Oct 2016 at 04:56 Robert Widmann via swift-evolution<br class="gmail_msg">
&gt; &lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; I’ve started doing this to try and mimic “Smart Constructors” in Haskell<br class="gmail_msg">
&gt;&gt; and I think it works quite well.<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; struct Format {<br class="gmail_msg">
&gt;&gt;   enum FormatBacking {<br class="gmail_msg">
&gt;&gt;     case SMALL(Int, Int)<br class="gmail_msg">
&gt;&gt;     case MEDIUM(Int, Int)<br class="gmail_msg">
&gt;&gt;     case LARGE(Int, Int)<br class="gmail_msg">
&gt;&gt;   }<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; _______________________________________________<br class="gmail_msg">
&gt; swift-evolution mailing list<br class="gmail_msg">
&gt; <a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="gmail_msg">
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; _______________________________________________<br class="gmail_msg">
&gt; swift-evolution mailing list<br class="gmail_msg">
&gt; <a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="gmail_msg">
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="gmail_msg">
&gt;<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
swift-evolution mailing list<br class="gmail_msg">
<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="gmail_msg">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="gmail_msg">
</blockquote></div>