swift 当每个闭包只返回一个Int时,这个函数如何调用这个闭包?

piok6c0g  于 2022-12-10  发布在  Swift
关注(0)|答案(1)|浏览(174)

我发现这段代码非常混乱:

let myClosure = { (number1: Int, number2: Int) -> Int in
    return number1 * number2
}

func useClosure(closure: (Int, Int) -> Int) {
    let result = closure(2, 3)
    print(result) // prints 6
}

useClosure(closure: myClosure)

函数useClosure取2个整数,参数名为closure,它是闭包myClosure,但myClosure只有1个返回的整数,那么它怎么可能是useClosure的参数呢?
那么myClosure从哪里得到number1number2呢?从useClosure
从表面上看,2和3似乎被传递给了myClosure,但不清楚这是如何发生的。
在我看来,这一切都是循环往复的,没有什么意义。
我还没有真正尝试过任何事情来“解决”这个问题,因为它并不真正需要解决。代码运行良好。我只是在努力理解它-从我作为一个开发人员的旅程。

mspsb9vt

mspsb9vt1#

如果你查看myClosure的声明--或者更好的方法是按住option键并单击它--你会看到它的类型是(Int, Int) -> Int,这正是useClosure所期望的输入参数的类型。
该类型签名表示一个闭包,它接受两个Int作为输入,并返回一个Int
函数useClosure采用2个整数,参数名为closure
useClosure接受一个闭包作为它的输入,而不是你所说的一对Int
您要将useClosure内的值传递给输入参数closure
在查看类型签名时,->左侧的所有内容都表示函数的输入参数,而右侧的所有内容都表示返回类型。

相关问题