[swift-evolution] [pitch] Variadic Arguments should accept Arrays
Jose Cheyo Jimenez
cheyo at masters3d.com
Mon Feb 27 13:09:06 CST 2017
> On Feb 27, 2017, at 9:59 AM, Haravikk <swift-evolution at haravikk.me> wrote:
>> On 27 Feb 2017, at 17:10, Jose Cheyo Jimenez via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> On Feb 26, 2017, at 9:25 AM, Tino Heth via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>> I suggest to take a look at the topics "Variadics as an Attribute" and "array splatting for variadic parameters" and https://github.com/Haravikk/swift-evolution/blob/a13dc03d6a8c76b25a30710d70cbadc1eb31b3cd/proposals/nnnn-variadics-as-attribute.md <https://github.com/Haravikk/swift-evolution/blob/a13dc03d6a8c76b25a30710d70cbadc1eb31b3cd/proposals/nnnn-variadics-as-attribute.md>.
>>> This is basically the other way round (arrays would accept variadic arguments), but it has the same effect — and more:
>>> You get rid of the odd "…" type, and it's also possible to use this with types besides array (set, iterator….)
>> I agree with getting rid of the Type... because we could use ... in slicing (see String manifesto). Why must it be an attribute and not just "*" ? The advantage I see is that this will play great in also deconstructing collection like things like Array, Slice and Tuple. This is already familiar to python and ruby users.
> Part of the aim is to avoid less easily discovered custom syntax; the point of the proposal is that there's no need for a special syntax just to support variadics as attributes already exist, plus they're more descriptive about what they do and easy to look-up.
These is very unfortunate as a solution for “spreading” a collection or tuple so that It can be applied to function taking a variadic.
It makes sense on the declaration site but not on the call site.
There is nothing special about variadic/ spreading that would warrant an attribute.
I think using attributes is not different than using a keyword like c# uses.
Do we really want to tag every array/tuple with a @variadic or @nonVariadic tag when packing and unpacking parameters?
variadic/ spreading (AKA packing / unpacking ) is a well known concept to most languages.
someFunc(*) // python, ruby,
someFunc(...) // php, ES6, golang
I am not proposing prefix * or prefix … as I think we should let the community decide but I would be opposed to using attributes or keywords.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-evolution