swift中value type和reference type

本文介绍了Swift语言中值类型(enum, struct)与引用类型(class)的区别,通过具体实例展示了值传递与引用传递的不同效果,并解释了Swift如何优化值传递以提高性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

swift中有enum,struct,class其中enum和struct是值传递,class是引用传递。

struct S {
    var data:Int = 0
}
var a = S()
var b = a   //将a的值传递给b
b.data = 1  //b修改值并不影响a
print("\(a.data)")  //此处输出0

class C{
    var data:Int = 0
}
var c = C()
var d = c   //将c的引用传递给d
d.data = 1  //修改d将会改变c
print("\(c.data)")  //此处输出1

在swift中值传递时将值copy给新的变量或常量时并不会马上copy,而是在新的变量修改其中的属性后才会进行copy,这样做可以减少大量值传递所带来的性能问题。
swift中的基础数据结构使用struct来实现,如Array,String,dictionary,Int,Double。在作文函数的参数时应注意传递方式为值传递,并且作为函数参数时默认设置为let。如函数

func f(arr:[Int]){
    var a = arr
}

arr类型为let arr:[Int]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值