如何引用函数的重载用作闭包?

时间:2018-03-11 21:09:06

标签: swift closures

考虑以下功能:

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版本。

有可能吗?

0 个答案:

没有答案