考虑以下功能:
func noArgsTest(){
print("No args")
}
func intTest(intValue:Int){
print("Int: \(intValue)")
}
func stringTest(stringValue:String){
print("Int: \(stringValue)")
}
您可以将这些函数用作闭包参数,或者甚至将它们分配给变量,然后您可以这样调用:
// For the 'Int' variant
let myFunc = intTest
myFunc(4)
// For the 'String' variant
let myFunc = stringTest
myFunc("A")
// For the parameterless variant
let myFunc = noArgsTest
myFunc()
但是,如何指定具有特定签名的重载版本?例如,如果这些函数都被命名为' test',就像这样呢?
func test(){
print("No args")
}
func test(value:Int){
print("Int: \(value)")
}
func test(value:String){
print("Int: \(value)")
}
您如何完成以下操作?
// For the 'Int' variant
let myFunc = ?
myFunc(4)
// For the 'String' variant
let myFunc = ?
myFunc("A")
// For the parameterless variant
let myFunc = ?
myFunc()
我尝试了以下内容,但没有编译
let myFunc = test(value:)
let myFunc = test(:String)
let myFunc = test(value:String)
注意:如果只有一个带参数' value'的重载,则第一个会起作用。但这里有两个,Int和String版本。
有可能吗?