当Swift中的函数分配给变量或作为嵌套函数从更高级别的函数返回时,它是按值传递还是按引用传递?当我写:
func foo() -> Bool
{
return false
}
var funcVar = foo
确实funcVar
接收到的引用foo()
,或者是副本foo()
创建并存储在内存中的“funcVar”叫什么名字?对于以下代码,存在相同的问题:
func otherfoo() -> (Int) -> ()
{
func bar(num :Int) {}
return bar
}
var funcVar = otherfoo()
第二个示例尤其使我感到困惑,因为如果在调用函数是通过引用分配/返回的情况下,如果我打电话的话,funcVar(3)
我应该无法访问bar
它,因为bar
它位于相同作用域内的另一个函数内部funcVar
,但仍然可以工作(来自C ++)背景,我很惊讶它会编译)。有人可以帮我澄清一下吗?
从Apple文档中:
在上面的示例中,increasingBySeven和increasingByTen是常量,但是这些常量引用的闭包仍然能够增加它们已捕获的runningTotal变量。这是因为函数和闭包是引用类型。
每当您将函数或闭包分配给常量或变量时,实际上就是在将该常量或变量设置为对该函数或闭包的引用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句