I agree mostly with what you’re saying, but variadic parameters don’t actually 
require at least one element. `max` simply returns a non-optional because its 
function signature has three non-variadic parameters as well:

public func max<T : Comparable>(_ x: T, _ y: T, _ z: T, _ rest: T...) -> T

> This has been brought up and there was a proposal by Haravikk, but the 
> discussion started almost mid-July and the deadline for all Swift 3 
> *implementation* was on Jul 27. So it didn't make it, but I think there will 
> be enough discussion about it on Aug 1 and after (all discussion about 
> features for future Swift releases is currently on hold until Aug 1).
> 
> Unfortunately, the suggested behavior has an issue what to do when the array 
> is empty. For example, you've mentioned min and max - there are (as variadic) 
> ensured to always be called with at least one value. When you use it with an 
> array, there is no guarantee that the array contains any element. In such 
> cases, what should the min/max do? Crash? Return +-infinity?
> 
> Changing min/max to return an optional would be a solution, but I don't think 
> a good one.
> 
> Moreover, for this particular example, you already have min/max on arrays:
> 
> let numbers = [23, 43, 12, 10]
> numbers.minElement()
> 
> > On Jul 29, 2016, at 11:46 AM, Alexandre Lopoukhine via 
> > swift-evolution<[email protected]>wrote:
> > 
> > Hello all,
> > 
> > I'm not sure if this has been brought up before, or what the status of the 
> > issue is as of Swift 3, but I was wondering why there is no option to call 
> > a function that takes a variadic parameter argument with an array. Seen as 
> > the parameter essentially becomes an array, and is used as such in the 
> > function, I think that adding the ability to call it with one directly 
> > could be useful, with few downsides. This will, for example, allow you to 
> > use the built-in `min` and `max` functions on arrays.
> > 
> > WDYT?
> > 
> > – Sasha
> > _______________________________________________
> > 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