默认情况下,如果声明函数的时候,参数的不指明是变量还是常量,则默认是常量的。如果要在函数中做相应改变参数的操作,则需要在声明参数的类型。如下:
//将一个十进制转换为二进制
func toBinary(var number:Int)->String{
var result : String = ""
while number != 0 {
result = String(number%2) + result
number /= 2
}
return result
}
var number = 10
toBinary(number)//"1010"
number//10
此时,传入函数的参数的数值不变,说明传入函数的参数,传的是一个数值的副本,而不是传引用。进过运算后,不会改变原有的参数的大小,而是改变该参数的副本的大小。而在Swift语言中,不管是传的是int string 还是数组,字典,元组,都是传数值,不是传引用。
如果确实需要使得调用前的数值发生变化,则需要用到inout
func swapTwoInts(inout a :Int,inout b:Int){
let t = a
a = b
b = t
}
var x = 0,y = 100
x//0
y//100
swapTwoInts(&x, &y)
x//100
y//0