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