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

时间:2018-10-13 17:27:36

标签: swift function completionhandler

我试图更快地理解闭包,并且尝试使用完成处理程序创建一个愚蠢的函数,该函数返回一个值,但该值无处可做...

这是我所做的。

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

当我尝试将此返回值保存在变量中时,它只返回了一对弯曲的括号。

我应该如何使用此返回值?

1 个答案:

答案 0 :(得分:2)

您要将值返回到productToString函数中,但没有对其进行任何其他操作。

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

    let result = num * num2

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

如果要打印结果,则必须通过productToString函数再次将其返回。

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

    let result = num * num2

    return completion(result)
}

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