假设我们有一个带有默认参数值的函数:
// function with default parameter values
func a(m:Int = 0, n:Int = 1) {
print(m, n)
}
a() // 0 1
a(m:2) // 2 1
a(n:3) // 0 3
a(m:4, n:5) // 4 5
现在我想从另一个函数返回完全相同的函数:
func b() -> (Int,Int)->Void {
func a(m:Int = 0, n:Int = 1) {
print(m, n)
}
return a // function returned
}
let a2 = b()
a2(m:4, n:5) // ⛔ error: extraneous argument labels 'm:n:'
a2(4) // ⛔ error: missing argument for parameter #2
a2(4,5) // OK
现在,我既不能使用参数标签,也不能使用默认值作为参数,为什么?
函数a2()
与函数a()
似乎完全不同,幕后发生了什么?