mar*_*cel 2 closures ios swift
根据Apple Swift文档:全局函数是具有名称但不捕获任何值的闭包.但是我在使用Swift的IOS 11 Programming Fundamentals一书中讨论了使用闭包的示例,它将全局函数A作为参数传递给另一个全局函数B来修改全局变量x的值.该书指出A捕获X,这与Swift文档所说的相矛盾.
代码示例:
func pass100(_ f: (Int) -> ()) {
f(100)
}
var x = 0
print(x) // output 0
func setX(newX: Int) {
x = newX
}
pass100(setX)
print(x) //output 100
Run Code Online (Sandbox Code Playgroud)
上面的代码片段在Xcode中工作,我很困惑.谁能解释一下这里发生了什么?
| 归档时间: |
|
| 查看次数: |
305 次 |
| 最近记录: |