Swift按值传递或按引用传递

前端之家收集整理的这篇文章主要介绍了Swift按值传递或按引用传递前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我真的新到Swift,我只是读,类通过引用和数组/字符串等被复制。

是通过引用传递与Objective-C或Java中的方式相同的方式,其中你实际上传递“a”引用或者它是否正确传递引用?

Swift中的事物类型

规则是:

>类实例是引用类型(即,对类实例的引用实际上是一个指针)
>函数是引用类型
>其他都是值类型; “一切”只是指结构的实例和枚举的实例,因为这是所有在Swift。例如,数组和字符串是struct实例。你可以通过使用inout和获取地址,传递一个引用到这些东西(作为一个函数参数),如newacct指出。但类型本身是一个值类型。

什么参考类型意味着你

引用类型对象在实践中是特殊的,因为:

>仅仅分配或传递给函数可以产生对同一对象的多个引用
>对象本身是可变的,即使对它的引用是一个常量(let,显式或隐含)。
>对对象的突变影响该对象,如对它的所有引用所看到的。

这些可能是危险的,所以请密切注意。另一方面,传递引用类型显然是有效的,因为仅复制和传递指针,这是微不足道的。

什么值类型意味着你

显然,传递值类型是“更安全”,并且意味着它说:你不能通过let引用来变换结构实例或枚举实例。另一方面,这种安全是通过单独复制价值实现的,不是吗?这不会使传递值类型可能昂贵吗?

好,是和否。这不是你想象的那么坏。正如Nate Cook所说,传递一个值类型不一定意味着复制,因为let(显式或隐式)保证不变性,所以没有必要复制任何东西。甚至传入var引用并不意味着事情将被复制,只是如果必要,它们可以被复制(因为有一个突变)。文档特别建议你不要让你的裤子扭曲。

原文链接:https://www.f2er.com/swift/321284.html

猜你在找的Swift相关文章