求教将一个函数指定给一个变量以后,原函数的默认参数值就丢失了,如何保证这个变量还能使用该函数的默认参数呢?
import Foundation
func test(_ a:Int,b:Int=10)->Int{
return a * b
}
print(test(2))
//20
//assign func test to a variable
var f = test
print(f(2))
//error: missing argument for parameter #2 in call
是这样的,下面的例子更能清晰表达这个过程:
这个变量的类型是个通用函数,但
如果把赋值的那一句改成
let f: (Int, Int=10) -> Int = test
编译器会直接报错 “Default argument not permitted in a tuple type” , 即函数本身为变量类型时,不允许带默认值,因此你的程序在编译中已经自动丢掉了默认值,所以到最后一步出错。我用的是Swift 4.0