Допустим, у нас есть функция со значениями параметров по умолчанию:
// 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()
, что происходит за кулисами?