<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On May 31, 2016, at 12:35 PM, Matthew Johnson &lt;<a href="mailto:matthew@anandabits.com" class="">matthew@anandabits.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="content-type" content="text/html; charset=utf-8" class=""><div dir="auto" class=""><div class="">I think I'm -1 on this. &nbsp;It makes things easier for the implementer of the function and harder for the caller. &nbsp;</div><div class=""><br class=""></div><div class="">It's not clear whether the caller could store an argument to pass in a variable, but if they could they would need to list out all cases in the type of the variable (unless these anonymous enums have structural subtyping). &nbsp;This is fragile. &nbsp;Any time that list changes all variable declarations will have to be updated.</div><div class=""><br class=""></div><div class="">Functions are implemented once and usually called more many times. &nbsp;It's better for callers if you just write it like this:</div><div class=""><br class=""></div><div class="">enum FitOrFill { case fit, fill }</div><div class=""><div dir="ltr" class=""><div class="gmail_quote"><div style="word-wrap: break-word;" class=""><table style="border-spacing: 0px; border-collapse: collapse; color: rgb(51, 51, 51); font-family: Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 13px;" class=""><tbody class=""><tr class=""><td style="padding: 0px 10px; vertical-align: top; overflow: visible; word-wrap: normal;" class=""><font face="UICTFontTextStyleTallBody" size="3" class=""><span style="background-color: rgba(255, 255, 255, 0);" class="">func scaleAndCropImage(</span></font></td></tr><tr class=""><td style="padding: 0px 10px; width: 50px; min-width: 50px; line-height: 18px; text-align: right; vertical-align: top; border-style: solid; border-color: rgb(238, 238, 238); border-width: 0px 1px 0px 0px;" class=""></td><td style="padding: 0px 10px; vertical-align: top; overflow: visible; word-wrap: normal;" class=""><font face="UICTFontTextStyleTallBody" size="3" class=""><span style="background-color: rgba(255, 255, 255, 0);" class="">    image: UIImage,</span></font></td></tr><tr class=""><td style="padding: 0px 10px; width: 50px; min-width: 50px; line-height: 18px; text-align: right; vertical-align: top; border-style: solid; border-color: rgb(238, 238, 238); border-width: 0px 1px 0px 0px;" class=""></td><td style="padding: 0px 10px; vertical-align: top; overflow: visible; word-wrap: normal;" class=""><font face="UICTFontTextStyleTallBody" size="3" class=""><span style="background-color: rgba(255, 255, 255, 0);" class="">    toSize size: CGSize,</span></font></td></tr><tr class=""><td style="padding: 0px 10px; width: 50px; min-width: 50px; line-height: 18px; text-align: right; vertical-align: top; border-style: solid; border-color: rgb(238, 238, 238); border-width: 0px 1px 0px 0px;" class=""></td><td style="padding: 0px 10px; vertical-align: top; overflow: visible; word-wrap: normal;" class=""><font face="UICTFontTextStyleTallBody" size="3" class=""><span style="background-color: rgba(255, 255, 255, 0);" class="">    <b class="">operation: FitOrFill&nbsp;= .fit</b></span></font></td></tr><tr class=""><td style="padding: 0px 10px; width: 50px; min-width: 50px; line-height: 18px; text-align: right; vertical-align: top; border-style: solid; border-color: rgb(238, 238, 238); border-width: 0px 1px 0px 0px;" class=""></td><td style="padding: 0px 10px; vertical-align: top; overflow: visible; word-wrap: normal;" class=""><font face="UICTFontTextStyleTallBody" size="3" class=""><span style="background-color: rgba(255, 255, 255, 0);" class="">    ) -&gt; UIImage {</span></font></td></tr></tbody></table></div></div></div><br class=""><div class="">So unless these anonymous enums are structurally subtyped I think it's a bad idea. &nbsp;And introducing structural subtyping here seems like a pretty large hammer for this use case.</div></div></div></div></blockquote></div><br class=""><div class=""><br class=""></div><div class="">From the caller's point of view, the type must be inferable and exactly match a token listed in the declaration (which would also appear in Quick Help):</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">let _ = scaleAndCropImage(image: myImage, toSize: size, operation: .fill)</font></div><div class=""><br class=""></div><div class="">You would not be able to assign `.fill` to a variable and use that for the operation value.</div><div class=""><br class=""></div><div class="">-- E</div><div class=""><br class=""></div></body></html>