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]