Swift闭包作为函数参数的调用逻辑与参数传递疑问
Swift闭包疑问解答
为什么myClosure能作为useClosure的参数?
你可能误解了myClosure的完整类型——它不是“仅返回单个Int”,它的类型就是接收两个Int参数、返回一个Int值,和useClosure要求的(Int, Int) -> Int闭包类型完全匹配:
myClosure定义里的(number1: Int, number2: Int)明确声明它接受两个Int输入参数-> Int声明了它的返回值类型为Int- 两者类型完全契合,所以
myClosure可以作为参数传入useClosure。
myClosure的number1和number2从哪里来?
参数传递逻辑是线性的,没有循环:
- 调用
useClosure(closure: myClosure)时,我们把myClosure这个闭包实例传给了useClosure的closure参数。 - 进入
useClosure函数内部后,执行closure(2, 3)——这一步就是把2和3作为参数,调用传入的闭包(也就是myClosure)。 - 此时
myClosure里的number1会被赋值为2,number2被赋值为3,执行乘法运算后返回6,最终被打印输出。
简单来说,useClosure的作用是“调用传入的闭包,并给它传递2和3这两个参数”,myClosure只负责接收参数并完成计算,两者分工明确,逻辑链清晰。
内容的提问来源于stack exchange,提问作者Ryan Ashton
相关产品推荐
相关产品推荐

