根据《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不可变数组》末尾

posted on 2016-09-20 14:09  SharpeyeKardel  阅读(998)  评论(0编辑  收藏  举报