是通过引用传递与Objective-C或Java中的方式相同的方式,其中你实际上传递“a”引用或者它是否正确传递引用?
规则是:
>类实例是引用类型(即,对类实例的引用实际上是一个指针)
>函数是引用类型
>其他都是值类型; “一切”只是指结构的实例和枚举的实例,因为这是所有在Swift。例如,数组和字符串是struct实例。你可以通过使用inout和获取地址,传递一个引用到这些东西(作为一个函数参数),如newacct指出。但类型本身是一个值类型。
什么参考类型意味着你
引用类型对象在实践中是特殊的,因为:
>仅仅分配或传递给函数可以产生对同一对象的多个引用
>对象本身是可变的,即使对它的引用是一个常量(let,显式或隐含)。
>对对象的突变影响该对象,如对它的所有引用所看到的。
这些可能是危险的,所以请密切注意。另一方面,传递引用类型显然是有效的,因为仅复制和传递指针,这是微不足道的。
什么值类型意味着你
显然,传递值类型是“更安全”,并且意味着它说:你不能通过let引用来变换结构实例或枚举实例。另一方面,这种安全是通过单独复制价值实现的,不是吗?这不会使传递值类型可能昂贵吗?
好,是和否。这不是你想象的那么坏。正如Nate Cook所说,传递一个值类型不一定意味着复制,因为let(显式或隐式)保证不变性,所以没有必要复制任何东西。甚至传入var引用并不意味着事情将被复制,只是如果必要,它们可以被复制(因为有一个突变)。文档特别建议你不要让你的裤子扭曲。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。