如何在完成处理程序中使用 return 值?

how to use the return value in a completion handler?

我试图更好地理解 swift 中的闭包,我试图创建一个带有完成处理程序的愚蠢函数,return 是一个值,但这个值无处可去......

这是我做的..

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 ()

当我试图将这个 return 值保存在一个变量中时,它 return 只是一对弯曲的括号。

我应该如何使用这个 return 值?

您正在 return 将值输入 productToString 函数,但未对​​其执行任何其他操作。

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

    let result = num * num2

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

如果您想打印结果,您必须从 productToString 函数中再次 return 它。

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

    let result = num * num2

    return completion(result)
}

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

中的 Void