On 20.04.2016 2:07, Ricardo Parada wrote:
> Would that require some compiler magic, i.e.
>
> foo(#splat(arr))

Probably yes. Although passing array to variadic func IMO is must-have feature, I don't think it will be used very often, so using of such compiler magic seems OK at the moment when we need this.

Also this solves the problem that passing array to variadic func is confusing about the arguments of function. If just pass array to such function - it is not clear what parameters of the function, is it variadic or "usual" function, is array just first argument or each value in array is argument.

The #splat solution is explicit, clearly mark function as variadic and array as a collection of parameters, it is *obvious* what is going there.

And as it is compiler business(at the compilation time) to interpret "arr" as a source of arguments for function - I think #splat is a correct solution.


To @Justin: I suggest to include this solution to the proposal.



On Apr 19, 2016, at 12:51 PM, Vladimir.S via swift-evolution 
<[email protected]> wrote:

I suggest to look at the subject of this thread and initial proposal:
"Swift should allow passing an *array to variadic functions*, or we should implement 
a type-safe `apply()` function in the standard library."

I.e. the question is *if we want/need to be able to pass array to existed variadic 
function*. Not about removing the variadic feature("removing" is offtop for 
this poposal, as I understand)

For example we have:
func foo(x: Int ...) {..}

and later in code we have
var arr : [Int] = getSomehow()

Should we be able to call foo in this way:

foo(arr)

Or how we can call foo(..) about array of values, not values as list of 
parameters.


On 19.04.2016 19:34, Jeremy Pereira via swift-evolution wrote:

On 19 Apr 2016, at 07:51, Haravikk via swift-evolution 
<[email protected]> wrote:



I think the question really is whether not having to add square brackets is 
really enough to justify a whole language feature? Basically you’ve got two 
ways you could do this:

No, that’s not the question. The question is whether the downside to variadic 
parameters is really enough to justify _removing_ an existing language feature.

The burden of justification should be on those people wanting to change the 
language, not on those wanting to maintain the status quo and “I don’t like it” 
or “I think it makes code a tiny bit less readable” is not sufficient 
justification, in my opinion because you already have the option not to use the 
feature. Whereas, if you remove the feature, those people of the opinion “it 
makes code a tiny bit more readable” have nowhere to go.

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to