【发布时间】:2015-11-28 06:21:42
【问题描述】:
当 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++ 背景,我只是对它编译感到惊讶)。
有人可以帮我解释一下这件事吗?
【问题讨论】:
标签: swift function pass-by-reference variable-assignment pass-by-value