当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++背景,我只是惊讶它编译通过)。
请问有人能为我解释一下这个问题吗?