如何在完成处理程序中使用 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
我试图更好地理解 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