Swift函数是按值还是按引用分配/传递?

野马XY

当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 ++)背景,我很惊讶它会编译)。有人可以帮我澄清一下吗?

亚伦·拉斯穆森(Aaron Rasmussen)

Apple文档中

在上面的示例中,increasingBySeven和increasingByTen是常量,但是这些常量引用的闭包仍然能够增加它们已捕获的runningTotal变量。这是因为函数和闭包是引用类型。

每当您将函数或闭包分配给常量或变量时,实际上就是在将该常量或变量设置为对该函数或闭包的引用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

python pandas dataframe,是按值传递还是按引用传递

在Java中是按值传递数组还是按引用传递数组?

困惑,当对象引用被传递时,java是使用按值调用还是按引用调用?

Java是按引用还是按值返回

Kotlin是“按值传递”还是“按引用传递”?

在C ++中按值传递还是按常量引用传递更好?

Ruby是按引用传递还是按值传递?

PHP变量是按值还是按引用传递?

在C#中,我应该按值传递参数并返回相同的变量,还是按引用传递?

我应该按引用还是按值传递大型数组?

C ++按值传递/按引用函数重载

vala是“按引用传递”还是“按值传递”?

C ++中的函数重载按值或按引用传递参数

.bind(this)是按引用还是按值传递?

std :: map是按引用,按值分配分配器还是将其纯粹用作类型?

从右值引用合格成员函数按值还是按右值引用返回?

ELM是按引用传递还是按值传递?

我应该按值还是按引用传递函数对象?

可移动但不可复制的对象:按值传递还是按引用传递?

PowerShell函数参数-按引用还是按值?

JDBC的Connection和Statement对象是按引用传递还是按值传递?

按值分配还是按引用分配?

函数按值传递和自由分配

按值传递与按引用传递(两者之间的内存空间分配差异)

Python-按值还是按引用

是按值还是按引用分配Excel VBA?

python递归通过引用还是按值传递?

如果 VAR_INPUT 是 INTERFACE 类型,那么值是按引用传递还是按值传递?

Java中的“按值传递”还是“按引用传递”?