根据《The Swift Programming Language》中文版基于Xcode6.1的文章描述:
Swift的 String 类型是值类型。如果创建了新的字符串,那么当其进行常量、变量赋值操作或在函数/方法中传递时,会进行值拷贝。任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作。另外,结构体和枚举都是值类型。
func changeString(var str : String) { //如果参数str前不加var修饰,函数默认str是一个常量 print(str) //修改前输出一次str let resultString: String = "myString Changed." str = resultString print(str) //修改后输出一次str } var myString: String = "myString" //定义一个String类型的常量myString print(myString) //输出myString changeString(myString) //myString调用changeString函数 print(myString) //myString输出的值仍为"string"
运行结果:
myString myString myString Changed. myString Program ended with exit code: 0
另一证明String是值类型实验,见《Swift不可变数组》末尾