加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift按值传递或按引用传递

发布时间:2020-12-14 06:08:53 所属栏目:百科 来源:网络整理
导读:我真的新到Swift,我只是读,类通过引用和数组/字符串等被复制。 是通过引用传递与Objective-C或Java中的方式相同的方式,其中你实际上传递“a”引用或者它是否正确传递引用? Swift中的事物类型 规则是: 类实例是引用类型(即,对类实例的引用实际上是一个
我真的新到Swift,我只是读,类通过引用和数组/字符串等被复制。

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

Swift中的事物类型

规则是:

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

什么参考类型意味着你

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

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

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

什么值类型意味着你

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读