Swift 如何在完成处理程序中使用返回值?

Swift 如何在完成处理程序中使用返回值?,swift,function,completionhandler,Swift,Function,Completionhandler,我试图更好地理解swift中的闭包,并尝试创建一个愚蠢的函数,该函数带有一个返回值的完成处理程序,但该值不起作用 这就是我所做的 func productToString(num: Int,num2: Int,completion: (Int)->String){ let result = num * num2 completion(result) } let numberToString = productToString(num: 3, num2: 6) {

我试图更好地理解swift中的闭包,并尝试创建一个愚蠢的函数,该函数带有一个返回值的完成处理程序,但该值不起作用

这就是我所做的

func productToString(num: Int,num2: Int,completion: (Int)->String){

    let result = num * num2

    completion(result)
}




let numberToString = productToString(num: 3, num2: 6) { (res) -> String in

    return "string:\(res)"

}


print(numberToString) // print statement prints ()
当我试图将这个返回值保存在一个变量中时,它只返回了一对曲线括号


如何使用此返回值?

您正在将该值返回到
productToString
函数中,但没有对其执行任何其他操作

func productToString(num: Int,num2: Int,completion: (Int)->String){

    let result = num * num2

    completion(result) // <--- Your return value ends up here
}

旁注:打印的空括号是一个空元组,相当于Swift中的
Void

您将值返回到
productToString
函数中,但不使用它执行任何其他操作

func productToString(num: Int,num2: Int,completion: (Int)->String){

    let result = num * num2

    completion(result) // <--- Your return value ends up here
}

旁注:打印的空括号是一个空元组,相当于Swift中的
Void

productToString没有返回值,值为
Void
。完成回调的概念是异步的。可以在
打印
之后调用完成回调。productToString没有返回值,值为
Void
。完成回调的概念是异步的。完成回调可以在
打印
之后调用。