提问人:Ryan Ashton 提问时间:12/7/2022 最后编辑:Dávid PásztorRyan Ashton 更新时间:12/7/2022 访问量:31
当每个函数只返回一个 Int 时,这个函数如何调用这个闭包?
How does this function call this closure when each returns just a single Int?
问:
我发现这段代码非常令人困惑:
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)
func 接受 2 个 Int,参数名称是闭包,但只有 1 个返回 Int,那么它怎么可能是 的参数呢?useClosure
closure
myClosure
myClosure
useClosure
从哪里来?从?myClosure
number1
number2
useClosure
从表面上看,似乎 2 和 3 正在传递,但目前尚不清楚这是如何发生的。myClosure
在我看来,这一切都是循环的,没有什么意义。
我还没有真正尝试过任何事情来“解决”这个问题,因为它并不真正需要解决。代码工作正常。我只是在努力理解它——从我作为开发人员的旅程中的位置。
答:
2赞
Dávid Pásztor
12/7/2022
#1
如果你看一下声明 - 或者更好的是,option+单击它 - 你会看到它的类型是 .这正是输入参数所期望的类型。myClosure
(Int, Int) -> Int
useClosure
该类型签名表示一个闭包,它接受两个 s 作为输入并返回一个 .Int
Int
func useClosure 采用 2 个 Int,参数名称为 closure
useClosure
将闭包作为其输入,而不是您声称的一对 S。Int
您将内部的值传递给输入参数 。useClosure
closure
查看类型签名时,左侧的所有内容都表示函数的输入参数,而右侧的所有内容都表示返回类型。->
评论