I created a bug report here: https://bugs.swift.org/browse/SR-2810 
<https://bugs.swift.org/browse/SR-2810>

Best regards,
Toni

> Am 30.09.2016 um 19:47 schrieb Mark Lacey <mark_la...@apple.com>:
> 
>> 
>> On Sep 30, 2016, at 5:02 AM, Toni Suter via swift-users 
>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote:
>> 
>> Hi,
>> 
>> I am trying to get a better understanding of Swift's function overload 
>> resolution rules.
>> As far as I can tell, if there are multiple candidates for a function call, 
>> Swift favors
>> functions for which the least amount of parameters have been ignored / 
>> defaulted. For example:
>> 
>> // Example 1
>> func f(x: Int) {  print("f1") }
>> func f(x: Int, y: Int = 0) { print("f2") }
>> f(x: 0)      // f1
>> 
>> // Example 2
>> func f(x: Int, y: Int = 0) {  print("f1") }
>> func f(x: Int, y: Int = 0, z: Int = 0) { print("f2") }
>> f(x: 0)      // f1
>> 
>> It also looks like Swift favors functions with default-value parameters over 
>> functions with variadic parameters:
>> 
>> func f(x: Int = 0) {  print("f1") }
>> func f(x: Int...) { print("f2") }
>> 
>> f()                  // f1
>> f(x: 1)              // f1
>> f(x: 1, 2)           // f2 (makes sense because f1 would not work here)
>> f(x: 1, 2, 3)                // f2 (makes sense because f1 would not work 
>> here)
>> 
>> But then I tested functions with default-value parameters and variadic 
>> parameters and things start to get weird.
>> For example, this must be a bug, right?
>> 
>> func f(x: Int..., y: Int = 0) { print(x, y) }
>> func f(x: Int...) { print(x) }
>> 
>> f()                  // []
>> f(x: 1)                      // [1]
>> f(x: 1, 2)           // [1, 2] 0
>> f(x: 1, 2, 3)                // [1, 2, 3]
>> 
>> I think, in this example, it should always call the second overload, because
>> no parameter is ignored / defaulted. What do you think?
> 
> Can you open a new bug report for this at bugs.swift.org 
> <http://bugs.swift.org/>?
> 
> Mark
> 
>> 
>> Thanks and best regards,
>> Toni
>> _______________________________________________
>> swift-users mailing list
>> swift-users@swift.org <mailto:swift-users@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-users 
>> <https://lists.swift.org/mailman/listinfo/swift-users>
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to