<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 8 Jul 2016, at 10:31, Pyry Jahkola &lt;<a href="mailto:pyry.jahkola@iki.fi" class="">pyry.jahkola@iki.fi</a>&gt; wrote:</div><div class=""><div dir="auto" class=""><div class=""><div class=""><br class=""></div><div class="">If you take this function for example,</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; func printThem(@variadic _ values: [Any])</div><div class=""><br class=""></div><div class="">then what would `values` be in the following calls, and why?</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; printThem() // clearly []</div><div class="">&nbsp; &nbsp; printThem(1) // clearly [1]</div><div class="">&nbsp; &nbsp; printThem(1, 2) // clearly [1, 2]</div><div class="">&nbsp; &nbsp; printThem([1], [2]) // clearly [[1], [2]]</div><div class="">&nbsp; &nbsp; printThem([]) // [] or [[]], which one?</div><div class="">&nbsp; &nbsp; printThem([1]) // [1] or [[1]]?</div><div class="">&nbsp; &nbsp; printThem([1, 2]) // [1, 2] or [[1, 2]]?</div></div></div></div></blockquote><blockquote type="cite" class=""><br class=""></blockquote><blockquote type="cite" class=""><div class=""><div dir="auto" class=""><div class=""><div class="">I think it would be less painful a change (i.e. can be delayed past Swift 3) if we just augment what we have (the `...` argument declaration syntax) with a way to expand an Array in place of a variadic argument:</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; func printThem(_ values: Any...)</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; printThem(1) // values == [1]</div><div class="">&nbsp; &nbsp; printThem([1]) // values == [[1]]</div><div class="">&nbsp; &nbsp; // Possible expansion postfix syntax:</div><div class="">&nbsp; &nbsp; printThem([1]...) // values == [1]</div><div class="">&nbsp; &nbsp; // Expanding a non-array sequence:</div><div class="">&nbsp; &nbsp; let things: Set&lt;Int&gt; = [1, 2, 3]</div><div class="">&nbsp; &nbsp; printThem(Array(things)...)</div></div></div></div></blockquote></div><br class=""><div class="">Good point, but actually these don't seem mutually exclusive; the three problem examples you gave could be resolved either by requiring the extra set of square brackets for clarity, and/or some kind of expansion like you suggest, either an operator or even possibly repurposing the attribute at the call-site for consistency. For example:</div><div class=""><br class=""></div><div class=""><font face="Monaco" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>printThem([1])<span class="Apple-tab-span" style="white-space:pre">        </span>// warning, ambiguous</font></div><div class=""><font face="Monaco" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>printThem([[1]])// non-variadic</font></div><div class=""><font face="Monaco" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>printThem(@variadic [1]) // absolutely definitely 100% a variadic call</font></div><div class=""><font face="Monaco" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>printThem([1],) // alternative to an operator/attribute for variadic&nbsp;disambiguation?</font></div><div class=""><br class=""></div><div class="">Thoughts?</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div class=""></div></div><blockquote type="cite" class=""><div class=""><div class="">On 8 Jul 2016, at 10:42, Tino Heth &lt;<a href="mailto:2th@gmx.de" class="">2th@gmx.de</a>&gt; wrote:</div><div class="">I'm not sure if the timing of this proposal is coincidence (I recently revived a discussion to remove variadics)</div></div></blockquote><br class=""><div class="">It is definitely not a coincidence ;)</div><div class="">I participated in the discussion on removal in the past and actually posted a preliminary version of this there, so the recent posts reminded me to put it into a proper proposal. Personally like some I'd just remove the feature completely, but it seems enough people want to keep it that it's worth exploring alternatives as there seems a fairly even mix of those for and against the feature.</div></body></html>