默認情況下,如果聲明函數的時候,參數的不指明是變量還是常量,則默認是常量的。如果要在函數中做相應改變參數的操作,則需要在聲明參數的類型。如下:
//將一個十進制轉換爲二進制
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